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属性