1. 程式人生 > >陣列(Array)和列表(ArrayList) LinkedList 有什麼區別?

陣列(Array)和列表(ArrayList) LinkedList 有什麼區別?

陣列(Array)和列表(ArrayList)有什麼區別?什麼時候應該使用 Array 而不是ArrayList ? 下面列出了 Array 和 ArrayList 的不同點:Array 可以包含基本型別和物件型別,ArrayList 只能包含物件型別。Array 大小是固定的,ArrayList 的大小是動態變化的。ArrayList 提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。對於基本型別資料,集合使用自動裝箱來減少編碼工作量。但是,當處理固定大小的基本資料型別的時候,這種方式相對比較慢。

 ArrayList 和 LinkedList 有什麼區別?ArrayList 和 LinkedList 都實現了 List 介面,他們有以下的不同點:ArrayList 是基於索引的資料介面,它的底層是陣列。它可以以 O(1)時間複雜度對元素進行隨機訪問。與此對應,LinkedList 是以元素列表的形式儲存它的資料,每一個元素都和它的前 一個和後一個元素連結在一起,在這種情況下,查詢某個元素的時間複雜度是 O(n)。相對於 ArrayList ,LinkedList 的插入,新增,刪除操作速度更快,因為當元素被新增到集合任 意位置的時候,不需要像陣列那樣重新計算大小或者是更新索引。LinkedList 比 ArrayList 更佔記憶體,因為 LinkedList 為每一個節點儲存了兩個引用,一個指向前一個元素,一個指向下一個元素。也可以參考 ArrayList vs. LinkedList 。