1. 程式人生 > >LinkedList源代碼深入剖析

LinkedList源代碼深入剖析

分析 col ont previous 類型 alt ima 搜索 before

源碼分析:

我們知道LinkedList的底層是采用雙向鏈表來實現的,所以下面來從源碼角度來分析一下,先來看一下它的類結構:

技術分享圖片

然後看一下它的構造:

技術分享圖片

而這個header又是什麽東東呢?

技術分享圖片

是一個Entry類型,好眼熟,對於HashMap遍歷的時候不就用過Entry麽,那看一眼它長啥樣?

技術分享圖片
好,接著咱們會往裏面添加數據:

技術分享圖片

看一下它的具體源碼:

技術分享圖片

而它又會調用addBefore()方法,接著定位到它:

技術分享圖片

總結:

  • 底層是采用雙向鏈表實現的。
  • 當向LinkedList中添加一個對象時,實際上LinkedList內部會生成一個Entry對象,該Entry對象的結構為:
    技術分享圖片
    其中的element就是我們向LinkedList中所添加的元素,然後Entry又構造好了向前和向後的引用previous、next,最後將生成的這個Entry對象加入到鏈表當中。換句話說,LinkedList中所維護的是一個個的Entry對象。
  • 當插入或刪除操作時,采用LinkedList比較好;當執行搜索操作時,采用ArrayList比較好。

LinkedList源代碼深入剖析