ArrayList和LinkedList有何異同?

2021-09-26 01:45:50 字數 749 閱讀 4946

相同點:

arraylist 和linkedlist 都是單列集合中list介面的實現類,它們都是訪問  允許重複,且有序的 的元素。

不同點:

(1)、arraylist的實現是基於動態陣列,在記憶體中分配連續的空間。

linkedlist 是以元素鍊錶的形式儲存它的資料,每乙個元素都和它的前乙個和後乙個鏈結在一起。

(2)、(

arraylist

查詢快,增刪慢) 遍歷元素和隨機訪問元素的效率更高。

查詢快:陣列隨機訪問,通過陣列位址和元素索引計算出元素位址,進行訪問。

增刪慢:增刪如果不在首尾,都需要移動元素。

(3)、(

linkedlist

查詢慢,增刪快)

linkedlist的插入,刪除元素效率更高,因為當元素被新增到集合任意位置的時候,不需要像陣列那樣重寫計算大小或者是更新索引。(4)、linkedlist 比arraylist更佔記憶體,因為linkedlist 的結點除了儲存資料,還儲存了兩個引用,乙個指向前乙個元素,乙個指向後乙個元素。

查詢慢: 從頭或尾依次定址

增刪塊:只需要修改幾個指標的指向。

(4)、對於隨機訪問,arraylist優於linkedlist,arraylist可以根據下標以o(1)時間複雜度對元素進行隨機訪問。而linkedlist的每乙個元素都依靠位址指標和它後乙個元素連線在一起,在這種情況下,查詢某個元素的時間複雜度是o(n)。

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 而如果是在多執行緒情...