LinkedList集合源碼分析(2)

(1)LinkedList 實現(xiàn)了無序、可重復的List接口,并且還實現(xiàn)了Deque(雙端隊列)和Queue(隊列)接口。LinkedList?底層是基于鏈表結構實現(xiàn)的,實現(xiàn)了雙端隊列的特性(FIFO)和棧的的特性(LIFO)。

1)添加元素的方法源碼分析?

具體源碼分析如下:

1)創(chuàng)建Node的鏈表數(shù)據(jù)結構

2)添加元素處理Node的結構關系。

首先我們看下LinkedList的構造函數(shù),有參的構造函數(shù)和ArrayList參數(shù)不一致,LinkedList 有參構造函數(shù)通過傳遞一個集合,添加到新LinkedList中。

LinkedList的構造函數(shù)

addAll通過將參數(shù)的集合元素轉換成數(shù)組(Object[] a = c.toArray())并遍歷這個數(shù)組創(chuàng)建Node鏈表關系。

LinkedList的all方法

基于all方法我們在看下LinkedList的add方法的源碼:

LinkedList的add方法

基于上述分析,LinkedList實現(xiàn)了Collection接口的方法,主要是通過雙端鏈表進行實現(xiàn),在這個基礎上擴展了隊列的和棧的功能。

FIFO(先進先出):將元素添加到雙端隊列的末尾,從雙端隊列的開頭移除元素。(和之前研究的add方法一樣)

LIFO(先進后出):元素被推入雙端隊列的開頭并從雙端隊列開頭彈出。

在隊列的開頭插入元素
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容