linklist概述
linkedlist 是 list 介面鍊錶的實現。基於雙向鍊錶實現的方式使得 linkedlist 在插入和刪除時更優於 arraylist,而隨機訪問則比 arraylist 遜色些。
但也是執行緒不安全
linklist uml類圖
linklist構造方法
//構造乙個空列表
public
linkedlist()
//構造乙個包含指定 collection 中的元素的列表,這些元素按其 collection 的迭代器返回的順序排列。
public
linkedlist(collection extends e> c)
查//將此列表中指定位置的元素替換為指定的元素。
public e get(int
index)
//查詢結點,採用的是折半查詢
nodenode(int
index) else
}
add方法
boolean add(e e),將指定元素新增到列表的結尾
public boolean add(e e)
void linklast(e e)
private
static
class node
}
void add(int index, e element)
指定的位置插入指定的元素。移動當前在該位置處的元素(如果有),所有後續元素都向右移(在其索引中新增 1)。
public
void add(int
index, e element)
void linkbefore(e e, nodesucc)
刪除指定索引元素public e remove(int
index)
e unlink(nodex) else
//如果當前結點的後續指標為空,說明刪除的是列表尾
if (next == null) else
//當前結點的資料置為空
x.item = null;
size--;
modcount++;
return element;
}
迭代器
因為linkedlist多重繼承了多個類,會先呼叫父類的方法,
public listiteratorlistiterator()
真正的有作用的方法是
public listiteratorlistiterator(int index)
private
class listitr implements listiterator
public boolean hasnext()
public e next()
public boolean hasprevious()
public e previous()
public
intnextindex()
public
intpreviousindex()
public
void
remove()
//替換元素
public
void
set(e e)
//新增到當前索引的元素
public
void
add(e e)
final void checkforcomodification()
}
LinkedList原始碼詳解
說明 linkedlist底層是用雙鏈表的方式實現,比較適合add和remove操作場景較多的情況。雙鏈表結構圖 類似於自行車鏈條,一環扣一環 一 類圖 linkedlist繼承了abstractsequentiallist抽象類,實現了add remove set等功能。linkedlist繼承了...
LinkedList原始碼詳解 2
peek操作 檢視不刪除 peek peekfirst 檢視容器中的第乙個元素,但是不刪除此元素。此方法和getfisrt效果類似,但是值得注意的是如果第乙個元素為空的話getfirst會丟擲異常 public e peek public e peekfirst 2.peeklast 檢視容器最後乙...
LinkedList 原始碼分析
linkedlist資料結構是 雙向鍊錶 先來講下單鏈表和雙向鍊錶 雙向鍊錶 單鏈表相對於雙向鍊錶來說,結構簡單。但有乙個缺點,即在單鏈表中只能通過乙個節點的引用訪問其後續節點,無法直接訪問其前驅節點,如果在單鏈表中想找到某個幾點的前驅節點,必須遍歷鍊錶,耗費時間。因此擴充套件了單鏈表,在單鏈表結構...