LinkedList
初始化设置:
1、初始头节点
transient Node<E> first;
2、初始尾节点
transient Node<E> last;
可以看到,初始时头节点和尾节点都是null。
构造方法:
1、无参构造方法
public LinkedList() {
}
2、参数为Collection对象的构造方法
public LinkedList(Collection<? extends E> c) {
this();
addAll(c);
}
添加内容:
1、我们常用到的添加元素的方法
public boolean add(E e) {
linkLast(e);
return true;
}
2、链表添加元素的方法
void linkLast(E e) {
final Node<E> l = last;
final Node<E> newNode = new Node<>(l, e, null);
last = newNode;
if (l == null)
first = newNode;
else
l.next = newNode;
size++;
modCount++;
}
①当LinkedList中没有任何元素时,此时我们插入第一个元素。
此时,first(头节点)和 last(尾节点)都是null,所以last会指向newNode,同时first也会指向newNode。如图所示:
②当LinkedList中有很多元素的时候,此时我们插入一个元素。
1、没插入之前:先让l指向到 last,当前链表的状态
2、然让newNode 的前驱指向到 l 中,而且让last指向到newNode。(可以这么认为此时的newNode就是last)。
3、最后一步,让l.next指向到newNode上,添加完成。
此时LinkedList添加元素成功。