LinkedList也是实现List接口的一个类,我用的比较少,现在要来好好学习下。
先来看他的成员变量。
List大小 头结点 尾结点再看看构造方法
空的构造方法 将集合c放入LinkedList在看成员方法之前时首先看一下一个十分重要的内部类。
Node类定义了一个Node类,并在其成员变量中指定next结点和prev结点。同时这些next结点和prev结点也是Node实例。
接下来看LinkedList的成员方法。
1.
头部加入一个元素按照自己的理解画了个示意图,如下
下面这个箭头表示转换过程然后要进行一个判断,如果f是空的话那么newNode就是尾结点,否则将newNode作为f的前置结点。
2.
尾部加入一个元素与在头部加入元素类似,如果l是空的话,那么newNode就变成了头结点,否则就将newNode作为l的后置结点。
3.
在某个结点之前插入新元素将新加入结点的前后指向改变即可。
4.
去掉头结点的方法去掉的是头结点f。定义f的成员变量item为element,next为next。再将二者置空值,至于回收的事情交给GC。然后把头结点改为之后的那个结点。最后返回的值是老的那个element。
5.
移除尾结点6.
移除某个非空的结点如果移除结点x的前置结点是空,那么说明这个x就是头结点,所以后面那个结点变成头结点。反之将前置结点的next指向后面那个结点,同时将x的前置结点置空。后面那一步同理。最后将item置空,返回老的element。
7.
获取首个元素值的方法因为有头结点这个成员变量,所以第一个元素很好取得。
8.
获取尾结点同理9.
删除头结点的方法其实就是调用刚才那个unlinkFirst方法。
10.
删除尾结点方法11.
添加头结点的方法(外部的)12.
添加尾结点的方法(外部的)13.
是否包含某个对象主要看indexOf方法。
14.
返回大小15.
默认的add方法是在最后加入元素的16.
删除某个元素的方法和ArrayList相同,删除的也是第一个出现的元素。通过链表的循环进行搜索。
17.
弹出第一个结点的元素和getFirst不同的是,peek碰到空结点会返回null,而getFirst返回一个exception。
18.
移除第一个结点并返回值类似于队列的pop,弹出第一个元素并且删除。
网友评论