在Java中,ArrayList是一個動態數組,它可以根據需要自動擴容。當ArrayList中的元素數量超過其當前容量時,ArrayList會自動擴容。擴容的過程如下:
計算新的容量:ArrayList會根據當前的容量和負載因子(load factor)計算新的容量。負載因子是ArrayList的一個屬性,默認值為0.75。新的容量通常是當前容量的1.5倍(即,新容量 = 當前容量 + 當前容量 * 負載因子)。
創建新的數組:根據計算出的新容量,ArrayList會創建一個新的數組,其大小為新容量。
復制元素:ArrayList會將原數組中的所有元素復制到新的數組中。
更新容量:將ArrayList的容量更新為新數組的大小。
以下是一個簡單的示例,展示了ArrayList擴容的過程:
import java.util.ArrayList;
public class ArrayListExpansion {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
System.out.println("Initial capacity: " + list.capacity()); // 輸出初始容量
for (int i = 0; i < 10; i++) {
list.add(i);
}
System.out.println("Size after adding 10 elements: " + list.size()); // 輸出添加10個元素后的容量
for (int i = 10; i < 20; i++) {
list.add(i);
}
System.out.println("New capacity after resizing: " + list.capacity()); // 輸出擴容后的容量
}
}
在這個示例中,我們首先創建了一個初始容量為10的ArrayList。然后,我們向列表中添加了10個元素。當添加第11個元素時,ArrayList會自動擴容。最后,我們輸出擴容后的容量。