简介
双端队列,实现了List、Deque接口,允许存储所有类型的元素,包括null值、非线程安全的
//获得线程安全的LinkedList
List list = Collections.synchronizedList(new LinkedList(...))
更正
现在有许多文章讲解linkedlist的底层实现,部分文章提到其底层是由双端循环队列实现的
但在jdk1.8中,linkedlist是双端队列,并非循环
简单的从一个方法可以证明
该方法添加一个新的头结点,可以看到newNode在构造时,将pre设置为null,且方法执行完毕也一直保持null,也就是说其pre属性并未有实际的引用,也就失去了构成循环的条件
/**
* Links e as first element.
*/
private void linkFirst(E e) {
final Node<E> f = first;
final Node<E> newNode = new Node<>(null, e, f);
first = newNode;
if (f == null)
last = newNode;
else
f.prev = newNode;
size++;
modCount++;
}