1. 程式人生 > >Java集合之LinkedList原始碼分析

Java集合之LinkedList原始碼分析

概述

LinkedLIst和ArrayLIst一樣, 都實現了List介面, 但其內部的資料結構不同, LinkedList是基於連結串列實現的(從名字也能看出來), 隨機訪問效率要比ArrayList差. 它的插入和刪除操作比ArrayList更加高效, 但還是要遍歷部分連結串列的指標才能移動到下標所指的位置, 只有在連結串列兩頭的操作能省掉移動, 如add(), addFirest(), removeLast()等.

LinkedList原始碼分析

1.資料結構

LinkedList是基於連結串列結構實現的, 在類中定義了頭尾指標. 其內部維護了一個雙向連結串列

Java集合之LinkedList

 

Java集合之LinkedList

 

2.構造方法

預設建構函式很簡單, 啥也沒有

Java集合之LinkedList

 

將集合的元素新增的LinkedList中:

Java集合之LinkedList

 

Java集合之LinkedList

 

Java集合之LinkedList

 

3.儲存

(1)add(E)在連結串列的末尾新增元素

Java集合之LinkedList

 

Java集合之LinkedList

 

(2)add(int, E)在指定的位置插入元素

Java集合之LinkedList

 

Java集合之LinkedList

 

Java集合之LinkedList

 

(3)addAll(Collection)將集合新增到連結串列末尾, 該方法在構造方法中介紹了, 在此不再贅述

Java集合之LinkedList

 

(4)addAll(int, Collection)將集合新增到連結串列的指定位置, 該方法也在構造方法中介紹了

Java集合之LinkedList

 

(5)addFirst(E)將元素新增到連結串列表頭位置

Java集合之LinkedList

 

Java集合之LinkedList

 

(6)addLast(E)將元素新增到表尾

Java集合之LinkedList

 

Java集合之LinkedList

 

4.獲取

Java集合之LinkedList

 

Java集合之LinkedList

 

Java集合之LinkedList

 

5.刪除

刪除方法不在給出原始碼, 基本大同小異. 有如下方法:

  1. remove(): 刪除第一個元素並返回, 呼叫 removeFirst 方法
  2. remove(int): 刪除連結串列指定位置的元素
  3. remove(Object): 從連結串列中刪除首次出現的元素
  4. removeFirst(): 刪除並返回第一個元素
  5. removeLast(): 刪除並返回最後一個元素
  6. removeFirstOccurrence(Object): 從連結串列中刪除第一次出現的指定元素
  7. removeLastOccurrence(Object): 從連結串列中刪除最後一個出現的指定元素

LinkedList是一個功能強大的類, 可以當作List集合、佇列和棧來使用.


 

 

可以關注一下鄙人的公眾號, 謝謝各位了!