JDK1.8源码阅读系列之二:LinkedList
本篇隨筆主要描述的是我閱讀 LinkedList 源碼期間的對于 LinkedList 的一些實現上的個人理解,有不對的地方,請指出~
先來看一下 LinkedList 的繼承圖:
由于 AbstractCollection ?與 AbstractList 之前在介紹 ArrayList 時已經介紹過,所以這里我先閱讀 AbstractSequentialList 類,之后再閱讀 LinkedList 類,記錄下我認為值得注意的地方。
一、?AbstractSequentialList 類相關
AbstractSequentialList 類中實現了比如 get 、set、 add、remove、addAll 等一些簡單方法,方法的內部實現均是通過 listIterator(Index) 來實現的,而?AbstractSequentialList 類中將
?listIterator(Index) 聲明為了抽象方法,所以調用的實際上還是 LinkedList 中的??listIterator(Index) 方法。
二、LinkedList 類相關
LinkedList 類是采用雙向鏈表實現的,鏈表節點所應用的內部類如下:
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 節點的鏈表操作,不再贅述。
?
?
轉載于:https://www.cnblogs.com/Michaelwjw/p/6308744.html
總結
以上是生活随笔為你收集整理的JDK1.8源码阅读系列之二:LinkedList的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第七篇:使用 CUDA 进行计算优化的两
- 下一篇: 数据库三才阵——天