-
1 # 變餅檔
-
2 # CoreCode
ArrayList實現了隨機訪問的介面,LinkedList實現了Quene的介面。
ArrayList是基於資料實現的list,而LinkedList是基於連結串列實現的list。所以,ArrayList擁有著陣列的特性,LinkedList擁有著連結串列的特性。
優缺點ArrayList
優點:適合隨機讀取的時候,讀取速度快,可以一步get(index)。
缺點:新增值很慢——一方面,新增資料在array中間的時候,需要移動後面的數;另一方面,當長度大於初始長度的時候,每新增一個數,都會需要擴容。
LinkedList:雙向連結串列
優點:新增值很快——新增在list中間也只需要更改指標;長度不固定。
實現棧和佇列方面,LinkedList要優於ArrayList。
其它LinkedList的remove(int)和remove(Object)的方法的時間複雜度都是O(n),不是O(1).因為會有一個查詢的過程。
LinkedList的remove(int)要優於remove(Object),因為remove(int)在查詢的時候,會從連結串列的中間查詢,如果int比中間小,找前半部分,否則找後半部分(類似二分查詢)。
ArrayList的增刪比LinkedList的開銷更大,因為除了有查詢的時間複雜度外,還有增刪的移動過程。
-
3 # 變餅檔
一般大家都知道ArrayList和LinkedList的大致區別:
1.ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。 (LinkedList是雙向連結串列,有next也有previous)
2.對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。
-
4 # CoreCode
ArrayList實現了隨機訪問的介面,LinkedList實現了Quene的介面。
ArrayList是基於資料實現的list,而LinkedList是基於連結串列實現的list。所以,ArrayList擁有著陣列的特性,LinkedList擁有著連結串列的特性。
優缺點ArrayList
優點:適合隨機讀取的時候,讀取速度快,可以一步get(index)。
缺點:新增值很慢——一方面,新增資料在array中間的時候,需要移動後面的數;另一方面,當長度大於初始長度的時候,每新增一個數,都會需要擴容。
LinkedList:雙向連結串列
優點:新增值很快——新增在list中間也只需要更改指標;長度不固定。
實現棧和佇列方面,LinkedList要優於ArrayList。
其它LinkedList的remove(int)和remove(Object)的方法的時間複雜度都是O(n),不是O(1).因為會有一個查詢的過程。
LinkedList的remove(int)要優於remove(Object),因為remove(int)在查詢的時候,會從連結串列的中間查詢,如果int比中間小,找前半部分,否則找後半部分(類似二分查詢)。
ArrayList的增刪比LinkedList的開銷更大,因為除了有查詢的時間複雜度外,還有增刪的移動過程。
回覆列表
一般大家都知道ArrayList和LinkedList的大致區別:
1.ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。 (LinkedList是雙向連結串列,有next也有previous)
2.對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。