Java容器源码分析-LinkedList

概览

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

private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;

        Node(Node<E> prev, E element, Node<E> next) {
            this.item = element;
            this.next = next;
            this.prev = prev;
        }
    }

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

transient Node<E> first;

transient Node<E> last;

 与arrayList比较

ArrayList 基于动态数组实现,LinkedList 基于双向链表实现。ArrayList 和 LinkedList 的区别可以归结为数组和链表的区别:

  • 数组支持随机访问,但插入删除的代价很高,需要移动大量元素;
  • 链表不支持随机访问,但插入删除只需要改变指针。
原文地址:https://www.cnblogs.com/dong973711/p/14666233.html