1. 程式人生 > >集合區別(list和linkedlist的區別)?

集合區別(list和linkedlist的區別)?

img 集合 linked 分享 move span 原因 指針 技術分享

1.list和linkedlist都是有序可重復,為什麽還要用linkedlist呢?

數組和數組列表都有一個重大的缺陷,這就是從數組的中間位置刪除一個元素需要付出很大的代價,其原因是數組中處於被刪除元素之後的所有元素都要向數組的前端移動。在數組的中間的位置插入一個元素也是如此。如下圖:

技術分享

這個問題就靠LinkedList(鏈表)來解決。鏈表將每個對象存放在獨立的節點中,每個節點還存放著序列中上一個節點的引用和下一個節點的引用,如下圖:

技術分享

ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。

對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指針。

對於新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。

集合區別(list和linkedlist的區別)?