LinkedList源码分析

LinkedList源码分析

  1. transient int size = 0;  //集合大小
    
  2. transient Node<E> first;   //指向头  链表头节点
    
  3. transient Node<E> last;   //指向尾   链表尾节点
    
  4. public LinkedList() {}   //构造方法
    
  5. add()方法分析:

    public boolean add(E e) {
            linkLast(e);
            return true;
        }
    
    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++;
        }
    
    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 @ 2020-07-07 18:09  邱大将军  阅读(86)  评论(0编辑  收藏  举报