ArrayList與LinkedList的區別

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

這裏的動態數組是指,當數組元素個數不斷增多,數組無法存儲時,系統會另外申請一個長度爲當前長度1.5倍的新數組,然後將之前的元素拷貝到新建的數組中。默認數組大小爲10。

2. 對於隨機訪問get和set,ArrayList要由於LinkedList,因爲LinkedList要移動指針。

ArrayList是基於數組,在內存中是一塊連續的地址,可以直接定位到相應位置取元素。而LinkedList是基於鏈表,訪問時需要從頭到尾遍歷。

3. 對於新增和刪除操作add和remove,LinkedList比較佔優勢,因爲ArrayList要移動數據。

鏈表在新增和刪除操作時只是對應的增加或者刪除節點與節點之間的連接,速度很快。而數組在增加和刪除中間元素時會造成該元素以後的所有元素的移動,這個時間花銷和鏈表相比還是很大的。

4. ArrayList的空間浪費主要體現在在list列表的結尾預留一定的容量空間,而LinkedList的空間花銷則體現在它的每一個元素都需要消耗一定的空間。

因爲ArrayList的空間增長率爲1.5,所以最後很可能留下一部分的空間是沒有用到的。對於LinkedList,每個節點有需要保存指針也需要空間開銷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章