Java集合之LinkedList原始碼分析
阿新 • • 發佈:2019-01-02
概述
LinkedLIst和ArrayLIst一樣, 都實現了List介面, 但其內部的資料結構不同, LinkedList是基於連結串列實現的(從名字也能看出來), 隨機訪問效率要比ArrayList差. 它的插入和刪除操作比ArrayList更加高效, 但還是要遍歷部分連結串列的指標才能移動到下標所指的位置, 只有在連結串列兩頭的操作能省掉移動, 如add(), addFirest(), removeLast()等.
LinkedList原始碼分析
1.資料結構
LinkedList是基於連結串列結構實現的, 在類中定義了頭尾指標. 其內部維護了一個雙向連結串列
2.構造方法
預設建構函式很簡單, 啥也沒有
將集合的元素新增的LinkedList中:
3.儲存
(1)add(E)在連結串列的末尾新增元素
(2)add(int, E)在指定的位置插入元素
(3)addAll(Collection)將集合新增到連結串列末尾, 該方法在構造方法中介紹了, 在此不再贅述
(4)addAll(int, Collection)將集合新增到連結串列的指定位置, 該方法也在構造方法中介紹了
(5)addFirst(E)將元素新增到連結串列表頭位置
(6)addLast(E)將元素新增到表尾
4.獲取
5.刪除
刪除方法不在給出原始碼, 基本大同小異. 有如下方法:
- remove(): 刪除第一個元素並返回, 呼叫 removeFirst 方法
- remove(int): 刪除連結串列指定位置的元素
- remove(Object): 從連結串列中刪除首次出現的元素
- removeFirst(): 刪除並返回第一個元素
- removeLast(): 刪除並返回最後一個元素
- removeFirstOccurrence(Object): 從連結串列中刪除第一次出現的指定元素
- removeLastOccurrence(Object): 從連結串列中刪除最後一個出現的指定元素
LinkedList是一個功能強大的類, 可以當作List集合、佇列和棧來使用.
可以關注一下鄙人的公眾號, 謝謝各位了!