LinkedList 类

1、由双向链表实现数据存储

2、元素有序、可重复、允许多个 null 元素

3、线程不安全,没有实现同步、互斥

4、一般情况下 80% - 90% 为查询,所以大部分情况下选择 ArrayList

  底层结构 增删效率 改查效率
ArrayList 可变数组 较低 较高
LinkedList 双向链表 较高 较低

 

底层

1、维护一个双向链表,first、last 分别指向首节点、尾节点

transient Node<E> first;
transient Node<E> last;

2、每个节点(Node 对象)维护 prev、next、item

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;
    }
}

(1)prev 指向前一个节点,next 指向后一个节点,以此实现双向链表

(2)item 节点存储对象

posted @ 2022-03-27 10:08  半条咸鱼  阅读(24)  评论(0)    收藏  举报