#成员变量
|
|
Node类是ListedList的一个内部类,其结构如下:
|
|
item表示当前节点的值,next引用指向下一个节点,prev引用指向前一个节点,这就是双向链表的特征
#构造方法
|
|
所有实现Collection接口的容器类,都一定有两个构造方法,一个无参,一个有参(参数为所有实现Collection的对象)
LinkedList(Collection< ? extends E> c) :构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列
首先调用this()生成一个空的LinkedList对象,然后调用addAll,把参数的Collection添加到LinkedList中,addAll(Collection< ? extends E> c)代码如下:
|
|
addAll方法有两个:
addAll(Collection< ? extends E> c) : 把Collection添加到LinkedList的尾端
addAll(int index, Collection< ? extends E> c):把Collection添加到LinkedList的index位置
在构造方法中调用一参的addAll,从而调用二参的addAll,此时index为成员变量size,即把Collection添加到LinkedList的尾端
|
|
node(index)方法非常重要,LinkedList很多方法都是通过node(index)才取得index位置的节点,从而进一步操作:
例如set(int index, E e),就是要通过node(index)取得index位置的node,从而设置node.item = e;
|
|
增加方法
|
|
|
|
除了linkBefore,linkFirst和linkLast也是其它增加方法的核心
例如addFirst内部是调用linkFirst,push()也是调用linkFirst,addLast()内部调用的是linkLast
#删除方法
remove(Object o):从此列表中移除首次出现的指定元素(如果存在)
|
|
这段代码很简单,就是遍历链表,把删除掉第一次出现参数值得节点,如果找不到,返回false
remove调用了unlink(x)方法:
|
|
#总结
LinkedList的实现是很简单的,数据结构是一个双向链表。