LinkedList原始碼分析

2022-09-23 12:51:12 字數 1919 閱讀 9678

大家可以先看一下這篇j**a簡單模擬雙向鍊錶 - coderdreams - (cnblogs.com)

維護的是乙個雙向鍊錶

public linkedlist()
無參例項化後,維護的是乙個雙向鍊錶(此時:size=0;first=null;last=null,modcount=0)

public boolean add(e e) 

// links e as last element.

// 將新元素作為最後乙個元素加入維護的雙向鍊錶

void linklast(e e) }*/

// 將last指向新例項化的newnode

// 此時l指向之前的last,沒變

last = newnode;

// 如果之前的last為空

// 也就是說e是第乙個元素時

if (l == null)

// 將first也指向它

first = newnode;

else

// 如果不是就將之前的last的next指向newnode

l.next = newnode;

// size++

size++;

// 修改次數++

modcount++;

}

無參時刪除的是第乙個元素

public e remove() 

public e removefirst()

// unlinks non-null first node f.

// 解除非空的第乙個節點f的鏈結。

private e unlinkfirst(nodef)

無參例項化後,維護的是乙個雙向鍊錶(此時:size=0;first=null;last=null,modcount=0)

public boolean add(e e) 

// links e as last element.

// 將新元素作為最後乙個元素加入維護的雙向鍊錶

void linklast(e e) }*/

// 將last指向新例項化的newnode

// 此時l指向之前的last,沒變

last = newnode;

// 如果之前的last為空

// 也就是說e是第乙個元素時

if (l == null)

// 將first也指向它

first = newnode;

else

// 如果不是就將之前的last的next指向newnode

l.next = newnode;

// size++

size++;

// 修改次數++

modcount++;

}

無參時刪除的是第乙個元素

public e remove() 

public e removefirst()

// unlinks non-null first node f.

// 解除非空的第乙個節點f的鏈結。

private e unlinkfirst(nodef)

// 最後返回到remove()

public e remove()

// 將element返回

return element;

}

// 最後返回到remove()

public e remove()

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