1.鍊錶介紹
鍊錶是一種物理儲存單元上非連續,非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標連線次序實現的。
鍊錶有一系列節點(鍊錶中每乙個元素稱為節點)組成,節點可以在執行時動態生成。
每個節點包括二個部分:一是儲存資料元素的資料域,另乙個是儲存下乙個節點位址的指標域。
雙鏈表是鍊錶的一種,由節點組成,每個資料節點中由兩個指標,分別指向直接後續和直接前驅,這也是linkedlist底層實現。
也就是乙個物件放3個變數,乙個存值,另外2個存位址,通過一些邏輯和演算法實現的雙鏈表的儲存結構。
插入原始碼分析
public boolean add(e e)
void linklast(e e)
//該類為節點類,用於實現鍊錶
private static class node
}//指定下標插入
public void add(int index, e element)
//返回指定下標源節點
nodenode(int index) else
} //置換節點
void linkbefore(e e, nodesucc)
刪除原始碼分析
//通過值刪除
public boolean remove(object o)
}} else }}
return false;
}//通過下標刪除
public e remove(int index)
//刪除並排序
e unlink(nodex) else
//一下和上面差不多
if (next == null) else
x.item = null;
size--;
modcount++;
return element;
}
這也是為什麼linkedlxxiangist增刪效率較快查詢慢的原因
linkedlist增刪後不需要向arraylist那樣呼叫本地方法實現重新排序,使用雙鏈表實現增刪數度快。
linkedlist不像arraylist那樣有下標,需要乙個乙個去拿使得查詢慢。
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按下標查詢元素速度快,但插入元素或者刪除元素效率低,因為都設計...