LinkedList 原始碼分析

2021-05-23 15:43:38 字數 615 閱讀 4825

linkedlist資料結構是 雙向鍊錶

先來講下單鏈表和雙向鍊錶

雙向鍊錶:單鏈表相對於雙向鍊錶來說,結構簡單。但有乙個缺點,即在單鏈表中只能通過乙個節點的引用訪問其後續節點,無法直接訪問其前驅節點,如果在單鏈表中想找到某個幾點的前驅節點,必須遍歷鍊錶,耗費時間。因此擴充套件了單鏈表,在單鏈表結構中新增乙個域,該域用於指向結點的直接前驅節點。

預設建構函式

下面**中解析了 linkedlist的新增和刪除方法

上篇文章講了linkedlist的新增和刪除的效率會比陣列的高。鍊錶操作這些方法的時候,只需要改變2個節點各自的前驅指標域和後驅指標域,而陣列需要移動很多元素。

下面這個方法會告訴我們有頭結點的好處,犧牲乙個節點的空間是值得的,在雙向鍊錶中,頭節點的後驅節點永遠指向第乙個節點,頭節點的前驅結點是指向鍊錶的最後乙個節點的。

所以需要確認第乙個節點和最後乙個節點就很容易了,對這2個結點進行操作也變得簡單了。

相對於陣列來說  隨機查詢的效率顯然陣列較高(當然了,你要是查雙向鍊錶的第乙個節點和最後乙個節點,陣列和鍊錶的效率也就不好說了,這裡主要指隨機訪問),陣列可以直接根據索引號隨機訪問,而鍊錶則需要遍歷。

呵呵 希望朋友們覺得有**不對的指出來,虛心請教。

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

linkedlist原始碼分析

一.繼承體系 二.原始碼分析 新增鍊錶元素 獲取指定索引元素 nodenode int index return lastnode 插入元素頻繁使用node方法根據索引找到要插入元素的位置,同時get方法獲取元素也是用到此方法。刪除鍊錶元素 private void unlink nodex els...