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