ArrayList和LinkedList的區別以及優缺點
阿新 • • 發佈:2018-12-15
ArrayList和LinkedList都是實現了List介面的容器類,用於儲存一系列的物件引用。他們都可以對元素的增刪改查進行操作。
對於ArrayList,它在集合的末尾刪除或新增元素所用的時間是一致的,但是在列表中間的部分新增或刪除時所用時間就會大大增加。但是它在根據索引查詢元素的時候速度很快。
對於LinkedList則相反,它在插入、刪除集合中任何位置的元素所花費的時間都是一樣的,但是它根據索引查詢一個元素的時候卻比較慢。
ArrayList和LinkedList的大致區別:
1.ArrayList是實現了基於動態陣列的資料結構,LinkedList是基於連結串列結構。
2.對於隨機訪問的get和set方法,ArrayList要優於LinkedList,因為LinkedList要移動指標。
3.對於新增和刪除操作add和remove,LinkedList比較佔優勢,因為ArrayList要移動資料。
他們在效能上的有缺點:
1.對ArrayList和LinkedList而言,在列表末尾增加一個元素所花的開銷都是固定的。對 ArrayList而言,主要是在內部陣列中增加一項,指向所新增的元素,偶爾可能會導致對陣列重新進行分配;而對LinkedList而言,這個開銷是 統一的,分配一個內部Entry物件。
2.在ArrayList集合中新增或者刪除一個元素時,當前的列表所所有的元素都會被移動。而LinkedList集合中新增或者刪除一個元素的開銷是固定的。
3.LinkedList集合不支援 高效的隨機隨機訪問(RandomAccess),因為可能產生二次項的行為。
4.ArrayList的空間浪費主要體現在在list列表的結尾預留一定的容量空間,而LinkedList的空間花費則體現在它的每一個元素都需要消耗相當的空間