内部结构

基于双向链表实现,使用 Node 存储链表节点信息。

  1. private static class Node<E> {
  2. E item;
  3. Node<E> next;
  4. Node<E> prev;
  5. }

每个链表存储了了 first 和 last 指针:

  1. transient Node<E> first;
  2. transient Node<E> last;

1632468146(1).png

  • LinkedList是一个双向链表
  • 链表的尾部元素的后一个节点是链表的头节点;而链表的头结点前一个节点则是则是链表的尾节点
  • LinkedList还实现了Dequeu接口,双端队列
  • 不是线程安全的
  • 一般我们这样认为:ArrarList查询和获取快,修改和删除慢;LinkedList修改和删除快,查询和获取慢。其实这样说不准确的。LinkedList做插入、删除的时候,慢在寻址,快在只需要改变前后Entry的引用地址;ArrayList做插入、删除的时候,慢在数组元素的批量copy,快在寻址。
  • LinkedList还可以当作栈、队列或双端队列使用