ArrayList 和 LinkedList
相同點
- 都是List接口的容器類
- 都用於存儲一系列對象的引用
- 都可以對元素進行CRUD
不同點
名稱 | ArrayList | LinkdeList |
---|---|---|
結構 | 動態數組 | 鏈表 |
應用 | 查詢 | 添加 |
get/set | 快 | 慢(移動指針) |
add/remove | 慢(移動數據) | 快 |
缺點
ArrayList 缺點
- ArrayList: 在內部構成是數組形式 增加一項內容時 有可能導致數組重新分配
但對於 LinkedList: 這個開銷是固定的,因爲是在內存中分配一個entry然後通過指針指向 - ArrayList: 如果添加或者刪除一個內容時,列表中的全部對象都要進行移動.
但對於 LinkedList:添加或者刪除一個元素時,開銷是固定的 - 在list列表的結尾處預留了一定的容量空間
因爲本身的存儲結構導致的
LinkedList缺點
不支持高效的隨機訪問 因爲linkedList從開頭開始遍歷 , 每次隨機訪問都會重新遍歷