大家可以先看一下這篇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按下標查詢元素速度快,但插入元素或者刪除元素效率低,因為都設計...