Linkedlist.add方法的详细分析
list.add的方法的底层
传入一个值给add方法,作为形参e,在该方法体内:
Linklist l = last;//最开始的时候last=null,因为还没执行完下面的代码,Node节点并没有添加进去,l=null
Linklist newNode =new Linklist(l,e,null);//第一个参数表示Node.pre,第二个是值,第三个是Node.next,此时对象就创建好了,即Node节点就有了。
//重要!!
//此时l指向前一个节点(如果l不为null的话),再把l得指向得节点地址赋给newNode的pre,因为此时l所在的位置就是newNode的pre,第一条线就连接上去了
//接下来是第二条next线怎么连上去的
last=newNode;//让last指向链表的最后一个节点,last永远是在创建好newNode后指向它,因为它就是指向最后一个节点的。
if(l==null)
first=newNode;//如果是第一个节点,就让first也指向它,以后就没firest的事了
else//否则,因为l=last,此时l是last指向节点的上一个节点,让l指向的节点next下一个新节点,此时就连接上去了
l.next=newNode;
//至此就完成了添加的操作,并且节点与节点之间是有连接的。