優點:get 和 set 呼叫花費常數時間,也就是查詢的速度快;
缺點:新項的插入和現有項的刪除代價昂貴,也就是新增刪除的速度慢
優點:新項的插入和和現有項的刪除開銷很小,即新增和刪除的速度快
缺點:對 get 和 set 的呼叫花費昂貴,不適合做查詢
•1.是否保證執行緒安全:
arraylist 和 linkedlist 都是不同步的,也就是不保證執行緒安全;
• 2.底層資料結構:
arraylist 底層使用的是 object 陣列;linkedlist 底層使用的是雙向迴圈鍊錶資料 結構;
• 3.插入和刪除是否受元素位置的影響:
① arraylist 採用陣列儲存,所以插入和刪除元素的時間復 雜度受元素位置的影響。
比如:執行 add(e e)方法的時候, arraylist 會預設在將指定的元素追加到此 列表的末尾,
這種情況時間複雜度就是 0(1)。
但是如果要在指定位置 i 插入和刪除元素的話(add(int index, e element))時間複雜度就為 o(n-i)。
因為在進行上述操作的時候集合中第 i 和第 i 個元素之後的(n-i) 個元素都要執行向后位/向前移一位的操作。
② linkedlist 採用鍊錶儲存,所以插入,刪除元素時間複雜 度不受元素位置的影響,
都是近似0(1)而陣列為近似 0(n)。
•4.是 否 支 持 快 速 隨 機 訪 問:
linkedlist 不 支 持 高 效 的 隨 機 元 素 訪 問 , 而 arraylist 實 現 了 randmoaccess 介面,
所以有隨機訪問功能。快速隨機訪問就是通過元素的序號快速獲取元素物件(對應於 get(int index)方法)。
•5.記憶體空間占用:
arraylist 的空 間浪費主要體現在在 list 列表的結尾會預留一定的容量空間,
而 linkedlist 的空間花費則體現在它的每乙個元素都需要消耗比 arraylist 更多的空間
(因為要存放直接後繼 和直接前驅以及資料)。
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 而如果是在多執行緒情...