Array和ArrayList都是Java程式中常用的基於索引的資料結構。從概念上講,ArrayList在內部是由陣列支援的,然而,理解兩者之間的區別是成為優秀Java開發人員的關鍵。這是最基本的一步,尤其是剛開始編寫程式碼的初學者。雖然兩者都用於在Java中儲存元素,可以是原語,也可以是物件,但它們在功能和效能方面有著相當大的差異。兩者的主要區別在於Array是靜態的,而ArrayList本質上是動態的。本文從各個方面對兩者進行了比較,以便您可以從中進行選擇。
這兩種資料結構之間的一個主要且值得註意的區別是,Array本質上是靜態的,這意味著它是一種固定長度的資料型別,而ArrayList本質上是動態的,這意味著它是一種可變長度的資料結構。從技術上講,一旦建立了Array物件,就不能更改或修改Array的長度。它包含相同資料型別的元素的順序集合。java中的陣列與C++中的函式不同。另一方面,ArrayList可以調整自身大小,陣列可以根據需要增長。由於它是一個動態資料結構,因此可以從列表中新增和刪除元素。
您不能在Java中建立介面的泛型類的陣列,因此陣列和泛型不能並行不悖,因此無法建立泛型陣列,因為陣列是協變的,而泛型是不變的。雖然陣列是固定長度的資料結構,但它包含同一類的物件或特定資料型別的原語。因此,如果在建立Array物件時嘗試儲存不同於指定資料型別的資料型別,它只會丟擲“ArrayStoreException”。另一方面,ArrayList支援泛型以確保型別安全。
ArrayList中不允許使用int、double、long和char等基本資料型別。它持有物件,在Java中,原語不被視為物件。另一方面,陣列在Java中既可以儲存原語,也可以儲存物件,因為它是Java中儲存物件最有效的資料結構之一。它是一種聚合資料型別,設計用於儲存可以是相同型別或不同型別的物件。
為了獲得陣列的長度,程式碼需要訪問length屬性,因為在陣列上執行操作時必須知道長度。雖然ArrayList使用size()方法來確定ArrayList的大小,但它與確定陣列的長度有很大的不同。size()method屬性決定ArrayList中元素的數量,而元素的數量又是ArrayList的容量。
例如:
公共類排列長度測試{
public static void main(字串[]args){
ArrayList arrList=新建ArrayList();
String[]items={“一”,“二”,“三”};
for(字串str:items){
arrList.add(str);
}
int size=items.size();
System.out.println(大小);
}
}
Array是Java中的一個本地程式設計元件,它是動態建立的,它們使用賦值運算子來儲存元素,而ArrayList使用add()屬性來**元素。ArrayList是Java集合框架中的一個類,它使用一組指定的方法來訪問和修改元素。ArrayList的大小可以動態增加或減少。陣列中的元素儲存在連續的記憶體位置,其大小始終保持不變。
雖然這兩種資料結構提供的效能與ArrayList由陣列支援的效能類似,但在CPU時間和記憶體使用率方面,兩者相比有一點優勢。比如說,如果你知道陣列的大小,你很可能會選擇ArrayList。但是,在陣列上迭代要比在ArrayList上迭代快一些。如果程式包含大量的原語,那麼陣列在時間和記憶體方面都會比ArrayList表現得更好。陣列是一種低階程式語言,可以在集合實現中使用。但是,效能可能會因所執行的操作而異。
陣列 | 陣列列表 |
陣列是一種固定長度的資料結構,一旦建立了陣列物件,就不能修改其長度。 | ArrayList本質上是動態的,這意味著它可以調整自身大小以在需要時增長。 |
陣列的大小在整個程式中保持不變。 | ArrayList的大小可以根據負載和容量動態增長。 |
它使用賦值運算子來儲存元素。 | 它使用add()屬性**元素。 |
它可以包含原語以及相同或不同資料型別的物件。 | ArrayList中不允許使用原語。它只能包含物件型別。 |
陣列和泛型不能並行不悖。 | ArrayList中允許使用泛型。 |
陣列可以是多維的。 | ArrayList是一維的。 |
它是一個本機程式設計元件,其中元素儲存在連續的記憶體位置。 | 它是Java集合框架中的一個類,物件從不儲存在相鄰的位置。 |
長度變數用於確定陣列的長度。 | Size()方法用於確定ArrayList的大小。 |
用於儲存指定元素或物件的記憶體比ArrayList少。 | 需要比陣列更多的記憶體來儲存物件。 |
迭代陣列比迭代ArrayList快。 | 就效能而言,迭代ArrayList要慢得多。 |
雖然有些人可能認為在程式中實現陣列比在ArrayList中實現陣列更快,原因很簡單,因為陣列是低階資料結構,但效能可能會因執行的操作而異。嗯,陣列的長度是固定的,而ArrayList的大小可以動態地增加或減少,因此ArrayList在功能上比陣列有一點優勢。然而,儘管存在差異,它們也有一些共同點。它們都是Java中基於索引的資料結構,允許儲存物件,並且都允許空值和重覆值。好吧,如果你事先知道物件的大小,你應該使用陣列,如果你不確定大小,就使用陣列列表。
...件自動轉換為其相應的原語型別的過程稱為取消裝箱。像ArrayLists這樣的集合使用包裝類,因為它們儲存物件。 什麼是java中的基元型別(primitive type in java)? 原始資料型別是Java程式語言提供的預定義資料型別。有八種基本型別。...
...控制結構,而foreach迴圈是一種增強的for迴圈,只適用於陣列和集合。 目錄 1. 概述和主要區別 2. 什麼是迴圈 3. 什麼是foreach迴圈 4. for迴圈與foreach迴圈的相似性 5. 並排比較-表格形式的for迴圈與foreach迴圈 6. 摘要 什麼是for迴圈(for ...
...和預定義型別。一些使用者定義型別的例子是類、介面和陣列。類用於建立物件。類由資料成員和方法組成。資料成員描述屬性,方法描述行為。介面只包含成員的宣告。成員應該由派生類定義。陣列可以儲存同一資料型別的多...
...考下面的程式碼。 int array1[]={1,2,3,4,5}; System.out.println(陣列1[5]); 這將導致異常。array1是一個包含5個元素的陣列。陣列的起始索引為零。列印第5個索引值會導致異常,因為它超出了界限。array1的最大索引為4。 圖03:ArrayoutBound...
...元素2,那麼元素1將位於元素2之前。 圖01:列表和設定 ArrayList,LinkedList,Vector是一些實現List的類。在ArrayList中,訪問元素的速度很快,但**和刪除速度較低。ArrayList不是執行緒安全的。從多個執行緒訪問同一個ArrayList可能不會...
關鍵區別–arraylist與linkedlist 集合對於儲存資料很有用。在普通陣列中,陣列大小是固定的。有時需要建立可以根據需要增長的陣列。Java等程式語言有集合。它是一個包含一組類和介面的框架。它充當一組元素的容器。集合...
...是c中的泛型集合#(generic collection in c#)? 非通用集合(如ArrayList、Queue、Stack等)可以儲存不同資料型別的元素。在獲取專案時,程式設計師應該鍵入將它們轉換為正確的資料型別。否則,它可能會導致執行時異常。通用集合類可...
陣列與連結列表 陣列是儲存元素集合的最常用的資料結構。大多數程式語言都提供了方法來輕鬆地宣告陣列和訪問陣列中的元素。連結串列,更確切地說是單鏈表,也是一種可以用來儲存元素集合的資料結構。它由一系列節...
JavaArrayList是一個通用的可調整大小的陣列。它提供了其他語言中陣列通常需要的大部分功能。這些操作包括:使用索引訪問元素、新增、刪除和更新元素、動態重新調整大小、對元素進行迭代等。這些操作中的大多數都經過了...
陣列和列表是程式設計中最有用的資料結構——儘管很少有人真正地利用它們來發揮他們的全部潛能。今天我將透過基本知識和一些簡單的Python示例來討論您。 ...