jdk源碼閱讀筆記之java集合框架(四)(LinkedList)
阿新 • • 發佈:2017-05-13
ray private array public 源碼閱讀 jdk源碼閱讀 oid color 解釋
關於LinkedList的分析,會從且僅從其添加(add)方法入手。
因為上一篇已經分析過ArrayList,相似的地方就不再敘述,關註點在LinkedList的特點。
屬性:
/** *鏈表頭 */ transient Node<E> first; /** * 鏈表尾 */ transient Node<E> last;View Code
從以上兩個屬性可以得出LinkedList是基於雙向鏈表實現的。
節點代碼(無需過多解釋):
private static class Node<E> { E item; NodeView Code<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }
LinkedList的add方法:
LinkedList中有多個add方法,大同小異,遂選取其一進行分析。
/** * 插入指定元素到list尾部*/ public boolean add(E e) { linkLast(e); return true; } /** * Links e as last element. */ void linkLast(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null); last = newNode; if (l == null) first = newNode; else l.next = newNode; size++; modCount++;//此系列博客中有詳細解釋 }
jdk源碼閱讀筆記之java集合框架(四)(LinkedList)