linkedlist底層使用鍊錶進行儲存資料。
鍊錶分為單向鍊錶和雙向鍊錶,單向鍊錶只會儲存下乙個節點的位址,雙向鍊錶則儲存前後兩個節點的位址資訊。因此在查詢時單向鍊錶只能由頭至尾查詢雙向鍊錶則可以雙向查詢。
linkedlist使用的是乙個內部類來表示節點
由於是雙向鍊錶,jdk在查詢時採取了二分法進行查詢
node
node
(int index)
else
}
public e remove
(int index)
e unlink
(node
x)else
if(next == null)
else
//舊節點資料置空
linkedlist新增刪除元素時不存在複製資料問題,因此速度較快。
在查詢時由於只能從一端開始逐個查詢,因此速度較慢。
LinkedList 原始碼分析
linkedlist資料結構是 雙向鍊錶 先來講下單鏈表和雙向鍊錶 雙向鍊錶 單鏈表相對於雙向鍊錶來說,結構簡單。但有乙個缺點,即在單鏈表中只能通過乙個節點的引用訪問其後續節點,無法直接訪問其前驅節點,如果在單鏈表中想找到某個幾點的前驅節點,必須遍歷鍊錶,耗費時間。因此擴充套件了單鏈表,在單鏈表結構...
LinkedList原始碼分析
資料結構 linkedlist是雙向迴圈鍊錶 1.構造方法 constructs an empty list.構造乙個空的列表 public linkedlist private transient entryheader new entry null,null,null entry e eleme...
LinkedList原始碼分析
linkedlist雖然和arraylist都實現了list介面,但兩者的底層資料結構截然不同。從類名可以看出,arraylist底層資料結構是陣列,而linkedlist底層資料結構是雙向鍊錶。兩者資料結構的優劣如下,arraylist按下標查詢元素速度快,但插入元素或者刪除元素效率低,因為都設計...