内部结构
基于双向链表实现,使用 Node 存储链表节点信息。
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
}
每个链表存储了了 first 和 last 指针:
transient Node<E> first;
transient Node<E> last;
- LinkedList是一个双向链表
- 链表的尾部元素的后一个节点是链表的头节点;而链表的头结点前一个节点则是则是链表的尾节点
- LinkedList还实现了Dequeu接口,双端队列
- 不是线程安全的
- 一般我们这样认为:ArrarList查询和获取快,修改和删除慢;LinkedList修改和删除快,查询和获取慢。其实这样说不准确的。LinkedList做插入、删除的时候,慢在寻址,快在只需要改变前后Entry的引用地址;ArrayList做插入、删除的时候,慢在数组元素的批量copy,快在寻址。
- LinkedList还可以当作栈、队列或双端队列使用