LinkedList原始碼分析

2021-10-07 21:49:10 字數 1192 閱讀 5348

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按下標查詢元素速度快,但插入元素或者刪除元素效率低,因為都設計...