linkedlist原始碼分析

2021-09-01 05:32:04 字數 888 閱讀 1359

一.繼承體系

二.原始碼分析

新增鍊錶元素

//獲取指定索引元素

nodenode(int index)

return lastnode;

}

}

插入元素頻繁使用node方法根據索引找到要插入元素的位置,同時get方法獲取元素也是用到此方法。

刪除鍊錶元素

private void unlink(nodex) else

//後繼元素為空,表尾指標指向前驅元素

if(next == null)else

//要刪除元素置為null

x.e = null;

//集合大小減一

size --;

//操作計數器加一

modcount++;

}

–三.實現棧操作

class myque

//加入元素

void addele(e o)

//彈出元素

e removeele()

//檢索棧頂資料,但是不刪除

public e peek()

}

–四arraylist和linkedlist比較

arraylist底層基於陣列實現,linkedlist底層基於鍊錶實現。

arraylist刪除和新增元素都需要將剩下的陣列元素重新複製一次,linkedlist只需要移動指定元素前後指標即可實現。

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