LinkedList 源码分析
-
按ALt 进入LinkedList 看见 一共有三个属性 transient int size = 0; //集合的大小 transient Node<E> first; //集合第一个位置 transient Node<E> last; //集合最后一个位置 返回案例 按ALt 进入add()方法 按ALt 进入linkLast()方法 void linkLast(E e) { 按ALt 进入Node方法 last=l final Node<E> l = last; l=last 传进来的指 last=null (null ,参数,null) final Node<E> newNode = new Node<>(l, e, null); last = newNode; //last 指向 newNode if (l == null) //第一次走l=null first = newNode; //first 指向 newNode else l.next = newNode; 第二次进来 走else 所以节点指向first size++; modCount++; } private static class Node<E> { E item; //实际数据 Node<E> next; //下一个节点 Node<E> prev; //上一个节点 得出结论: 两个节点是互相指向的 上一个指下一个 下一个指上一个 first 指向第一个 last指向最后一个 返回linkLast方法 Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }