java之LinkedList.add

LinkedList:
  public boolean add(E e) {
        linkLast(e);
        return true;
    }
 void linkLast(E e) {  
 //last为当前集合的最后一个元素的指针位置元素,并且将其赋值给名称为l的node对象
        final Node<E> l = last;  
        //初始换一个新的node对象,传入的参数有 l:同上  e:传入的需要存入的数据对象
        final Node<E> newNode = new Node<>(l, e, null);
        //将新传入的数据的对象赋值给当前集合的最后指针元素
        last = newNode;
        //如果l为空(表示当前集合长度为零)
        if (l == null)
            //新创建的node对象放在集合的第一位
            first = newNode;
        else
            //如果l对象不为空则把新创建的node对象赋值给l对象中的node类型的next对象
            l.next = newNode;
        //集合长度
        size++;
        //修改次数
        modCount++;
    }
    

Node<E>为集合中的内部静态类:

    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;
        }
    }

 当调用集合add方法传入需要存放的数据时:

  1、先把last(last是当前集合的最后一个元素,如果集合的长度为空,last则为null)赋给名称为l的node对象。

  2、创建一个新的node对象,用来存放新的数据元素,同时通过带参构造把存入之前集合中的最后一个元素与之建立联系,将之前的最后一个元素赋给新创建的node对象的prev属性。

  3、将存入的数据元素设置为当前集合中的最后一个元素

  4、如果当前集合长度为空,则设置当前存入的元素为第一个元素,否则赋给存入之前的最后一个元素的next属性

       

原文地址:https://www.cnblogs.com/shiguotao-com/p/10060368.html