LinkedList原始碼分析

2021-10-02 01:54:16 字數 1175 閱讀 1571

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