android-sdk/android-23/java/util/LinkedList.java
LinkedList实现了List、Deque、Queue接口,说明他可以当做列表、双端队列、队列用
属性:
transient Link<E> voidLink;
它的next域指向双向链表的头结点、previous域指向双向链表的尾节点- 长度:size
节点对象,采用双向链表。
private static final class Link<ET> {
ET data;
Link<ET> previous, next;
Link(ET o, Link<ET> p, Link<ET> n) {
data = o;
previous = p;
next = n;
}
}
集合初始化
voidLink字如其名,是个空引用,只包含引用,不会实际存储数据。起作用的就是它的previous和next
public LinkedList() {
voidLink = new Link<E>(null, null, null);
voidLink.previous = voidLink;
voidLink.next = voidLink;
}
添加
头插法
private boolean addFirstImpl(E object) {
Link<E> oldFirst = voidLink.next;
Link<E> newLink = new Link<E>(object, voidLink, oldFirst);
voidLink.next = newLink;
oldFirst.previous = newLink;
size++;
modCount++;
return true;
}
尾插法
private boolean addLastImpl(E object) {
Link<E> oldLast = voidLink.previous;
Link<E> newLink = new Link<E>(object, oldLast, voidLink);
voidLink.previous = newLink;
oldLast.next = newLink;
size++;
modCount++;
return true;
}