Java 中的 List 接口有兩種常見的實現類:ArrayList 和 LinkedList。
ArrayList 內部使用數組來存儲元素,當 ArrayList 容量不足時,會自動進行擴容。ArrayList 的擴容機制是在當前容量不足時,創建一個新的更大容量的數組,并將原數組中的元素復制到新數組中。默認情況下,每次進行擴容時,新數組的容量是原數組容量的 1.5 倍,即增長率是 50%。
LinkedList 是一個雙向鏈表,每個節點包含了前一個節點和后一個節點的引用。當添加元素時,LinkedList 不需要進行擴容操作,因為它的存儲結構是動態的,可以根據需要靈活地分配節點。
總結起來,ArrayList 通過擴容機制來實現動態增長,而 LinkedList 則通過動態分配節點來實現動態增長。