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的空間花費則體現在它的每乙個元素都需要消耗相當的空間
所以在我們進行對元素的增刪查操作的時候,進行 查操作時用arraylist,進行增刪操作的時候最好用linkedlist。
Array List和ArrayList的區別與
定義 public abstract class array icloneable,ilist,icollection,ienumerable,istructuralcomparable,istructuraequatable 陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元...
LinkedList和ArrayList的區別
對於集合collection下的list介面,有兩個實現類,arraylist和linkedlist,那麼他們兩個有什麼區別呢。arraylist的底層由陣列實現,而linkedlist的底層由雙向鍊錶實現,底層的不同才是他們區別的根源。然而因為他們繼承於同乙個父介面,他們的很多方法都是相同的。關於...
ArrayList和LinkedList的面試題
一 arraylist為什麼是執行緒不安全的?arraylist在新增乙個元素的時候,它可能會有兩步來完成 1.在 items size 的位置存放此元素 2.增大 size 的值。在單執行緒執行的情況下,如果 size 0,新增乙個元素後,此元素在位置 0,而且 size 1 而如果是在多執行緒情...