簡體   English   中英

在 Java 中創建數組和數組列表是一樣的嗎?

[英]Is creating an array and an array list the same thing in Java?

在 Java 中創建數組和創建arraylist是否相同? 我聽到了很多關於這方面的不同故事,所以如果你能指出我正確的方向,我將不勝感激:)

數組是一種原始結構。 它是順序的 memory 並由 JVM 分配。

arraylist 在其后面使用一個數組,但您無法直接訪問它。 它可以“增長”,而常規數組則不能。

基本上,arraylist 開始(默認情況下)后面有一個長度為 10 的數組,計數為 0。所以想象你有

ArrayList<Integer> myInts = new ArrayList<Integer>();

這后面是一個這樣的數組

count = 0
array = [ null, null, null, null, null, null, null, null, null, null ]

當你 go myInts.add(5); 它這樣做

count = 1
array = [ 5, null, null, null, null, null, null, null, null, null ]

如果你添加更多,你可以得到這個

count = 10
array = [ 5, 4, 3, 2, 1, 5, 8, 3, 0, -1 ]

如果您再添加一個(這會使它超出其容量),它將創建一個新陣列來支持它

count = 11
array = [ 5, 4, 3, 2, 1, 5, 8, 3, 0, -1, 9, null, null, null, null, null, null, null, null, null ]

如果需要,您可以更改后備數組的大小。 例如:

myInts.trimToSize();

count = 11 // hasn't changed
array = [ 5, 4, 3, 2, 1, 5, 8, 3, 0, -1, 9]

myInts.ensureCapacity(15);

count = 11 // hasn't changed
array = [ 5, 4, 3, 2, 1, 5, 8, 3, 0, -1, 9, null, null, null, null,]

您可以擁有一組原始類型,而 ArrayList 不支持原始類型。

如果使用 Array 而不是 ArrayList,則可以節省一些 memory,但不會具有 Java Collection Framework 提供的額外功能。

簡而言之,陣列無法像ArrayList那樣增長。 您甚至可以縮小或清除ArrayList

不,這些不是一回事。

支持真正的 arrays 是 Java 語言和 Java 虛擬機的一部分。 JVM 指令集中有特定指令可與 arrays 配合使用。

ArrayList只是 class 核心 Java 庫的一部分。 在內部,它將元素存儲在 Java 數組中。 將其與LinkedList等其他列表實現進行比較。

在實踐中,像ArrayList這樣的List實現提供了比數組更多的功能。 例如, ArrayList可以有不同的大小,如果需要更多空間,它將重新分配底層數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM