LinkedList的源码分析

LinkedList的实现是通过双向链表,示意图如下

 

public class LinkedList<E>extends AbstractSequentialList<E>
  implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
  transient int size = 0; //链表元素个数

  transient Node<E> first;//第一个元素

  transient Node<E> last;//最后一个元素

  public LinkedList() {
  }

  public LinkedList(Collection<? extends E> c) {
    this();
    addAll(c);
  }

  

  private void linkFirst(E e) {
    final Node<E> f = first;
    final Node<E> newNode = new Node<>(null, e, f);
    first = newNode;
    if (f == null)
      last = newNode;
    else
      f.prev = newNode;
    size++;
    modCount++;
  }

  private static class Node<E> {
  E item;
  Node<E> next;
  Node<E> prev;

  Node(Node<E> prev, E element, Node<E> next) {
    this.item = element;
    this.next = next;
    this.prev = prev;
  }
}

 

}

posted @ 2016-10-09 14:27  爱编程的vv  阅读(113)  评论(0)    收藏  举报