JDK1.8源码阅读系列之二:LinkedList
本篇隨筆主要描述的是我閱讀 LinkedList 源碼期間的對于 LinkedList 的一些實現(xiàn)上的個人理解,有不對的地方,請指出~
先來看一下 LinkedList 的繼承圖:
由于 AbstractCollection ?與 AbstractList 之前在介紹 ArrayList 時已經(jīng)介紹過,所以這里我先閱讀 AbstractSequentialList 類,之后再閱讀 LinkedList 類,記錄下我認為值得注意的地方。
一、?AbstractSequentialList 類相關(guān)
AbstractSequentialList 類中實現(xiàn)了比如 get 、set、 add、remove、addAll 等一些簡單方法,方法的內(nèi)部實現(xiàn)均是通過 listIterator(Index) 來實現(xiàn)的,而?AbstractSequentialList 類中將
?listIterator(Index) 聲明為了抽象方法,所以調(diào)用的實際上還是 LinkedList 中的??listIterator(Index) 方法。
二、LinkedList 類相關(guān)
LinkedList 類是采用雙向鏈表實現(xiàn)的,鏈表節(jié)點所應(yīng)用的內(nèi)部類如下:
1 public class LinkedList<E> { 2 ...... 3 private static class Node<E> { 4 E item; 5 Node<E> next; 6 Node<E> prev; 7 8 Node(Node<E> prev, E element, Node<E> next) { 9 this.item = element; 10 this.next = next; 11 this.prev = prev; 12 } 13 } 14 ..... 15 }
?
其余方法基本都是基于 Node 節(jié)點的鏈表操作,不再贅述。
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Michaelwjw/p/6308744.html
總結(jié)
以上是生活随笔為你收集整理的JDK1.8源码阅读系列之二:LinkedList的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七篇:使用 CUDA 进行计算优化的两
- 下一篇: Fragment第二次加载没有数据