LinkedList就传说中的双向链表了。是List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。
查看LinkedList的构造函数:
/** * Constructs an empty list. */ public LinkedList() { header.next = header.previous = header; }
这里的header变量的定义如下:
private transient Entry<E> header = new Entry<E>(null, null, null);
表示双向循环链表的头结点。其中的Entry定义了双向链表的结构:
private static class Entry<E> { E element; Entry<E> next; Entry<E> previous; Entry(E element, Entry<E> next, Entry<E> previous) { this.element = element; this.next = next; this.previous = previous; } }
Entry中包括数据元素、前续结点和后续结点。
构造函数即是初始化一个只包含header头结点一个元素的双向链表。