LinkedList原始碼分析2

2021-10-20 15:16:55 字數 2597 閱讀 3139

linkedlist

ls =

newlinkedlist

<

>()

; ls.

add(1)

; ls.

add(3)

; ls.

add(5)

; ls.

add(7)

; integer peek = ls.

peek()

;//1

integer peekfirst = ls.

peekfirst()

;//1

integer peeklast = ls.

peeklast()

;//7

返回值

函式含義

epeekfirst

返回此列表中的第乙個元素。

epeek()

返回此列表中的第乙個元素。

epeeklast()

返回此列表中的最後乙個元素。

從上面的執行結果來看,分別獲取鍊錶的首個元素和最後乙個元素。看原始碼分析如下:

// 將首結點賦值給當前結點,如果為空,返回空,否則返回元素

public e peek()

//和peek()函式一樣

public e peekfirst()

//將尾結點賦值給當前結點,如果為空,返回空,否則返回元素

public e peeklast()

返回值

函式含義

void

add​(int index, e element)

將指定的元素插入此列表中的指定位置

boolean

addall​(int index, collection extends e> c)

從指定位置開始,將指定集合中的所有元素插入此列表

boolean

addall​(collection extends e> c)

按照指定集合的​​迭代器返回的順序,將指定集合中的所有元素追加到此列表的末尾

public

void

add(

int index, e element)

void

linkbefore

(e e, node

succ)

public

boolean

addall

(int index, collection<

?extends

e> c)

else

//迴圈連理陣列,建立結點。然後設定前後引用關係

for(object o : a)

//如果原來結點為空,那麼設定當前pred為最後乙個結點。

if(succ == null)

else

size += numnew;

modcount++

;return

true;}

//直接將集合插入到原來鍊錶的尾部

返回值函式含義e

get(int index)

返回指定位置的元素。

eelement()

檢索但不刪除此列表的頭(第乙個元素)。

intindexof​(object o)

返回指定元素在此列表中首次出現的索引;如果此列表不包含該元素,則返回-1。

intlastindexof​(object o)

返回指定元素在此列表中最後一次出現的索引;如果此列表不包含該元素,則返回-1。

public e get

(int index)

//內部呼叫node(index)方法

node

node

(int index)

else

}//獲取第乙個元素

public e element()

//獲取元素第一次出現位置的索引,沒有則返回-1

public

intindexof

(object o)

}else

}return-1

;}//找出元素最後一次出現的位置。從後往前遍歷

public

intlastindexof

(object o)

}else

}return-1

;}

返回值

函式含義

eset​(int index, e element)

用指定的元素替換此列表中指定位置的元素

//修改指定位置的元素

public e set

(int index, e element)

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