LinkedList 原始碼小解

2022-08-18 19:45:17 字數 1413 閱讀 4953

一、成員

private

transient entryheader = new entry(null, null, null

);private

transient

int size = 0;

底層維護的是乙個entry鍊錶(雙向迴圈鍊錶)

二、linkedlist.entry類

成員e element;

//data

entrynext; //

前指標entryprevious; //

後指標三、方法

1、public

linkedlist()

該方法構造了乙個新的entry鍊錶,前後指標都指向自身

2、public

e getfirst()

獲取鍊錶中第乙個元素

3、public

e getlast()

獲取鍊錶中最後乙個元素

4、private e remove(entrye)

移除鍊錶中的某個元素

5、private entryaddbefore(e e, entryentry)

插入乙個元素

6、public

boolean addall(int index, collection<? extends e>c)

successor.previous =predecessor;

size +=numnew;

return

true;}

在鍊錶最後面新增

7、private entryentry(int

index)

else

returne;}

獲得index對應的entry物件,如果index>size>>1則使用前指標,如果index>1則使用後指標遍歷到索引處

8、public

intindexof(object o)

} else

}return -1;

}獲取元素對應的索引位置

9、public

boolean

removelastoccurrence(object o) }}

else}}

return

false;}

移除最後一次出現的元素

10、

private

class listitr implements listiteratorlist中用來遍歷的iterator型別

11、public iteratordescendingiterator()

private

class descendingiterator implements

iterator

用於倒序遍歷的iterator

LinkedList 原始碼分析

linkedlist資料結構是 雙向鍊錶 先來講下單鏈表和雙向鍊錶 雙向鍊錶 單鏈表相對於雙向鍊錶來說,結構簡單。但有乙個缺點,即在單鏈表中只能通過乙個節點的引用訪問其後續節點,無法直接訪問其前驅節點,如果在單鏈表中想找到某個幾點的前驅節點,必須遍歷鍊錶,耗費時間。因此擴充套件了單鏈表,在單鏈表結構...

LinkedList原始碼分析

資料結構 linkedlist是雙向迴圈鍊錶 1.構造方法 constructs an empty list.構造乙個空的列表 public linkedlist private transient entryheader new entry null,null,null entry e eleme...

LinkedList原始碼解析

1 實現了deque,所以是雙向鍊錶,同時可以作為雙向佇列 2 未實現randomaccess,就不能隨即訪問,對於所有的資料結構都是這樣,改介面只是起到標識作用 3 實現轉殖和序列化介面 4 鍊錶就會有節點node,雙向就會有first和last節點 5 預設建構函式什麼都沒有做,鍊錶不需要初始化...