jdk源码阅读笔记之java集合框架(LinkedList)

Posted 蒋旺93

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdk源码阅读笔记之java集合框架(LinkedList)相关的知识,希望对你有一定的参考价值。

关于LinkedList的分析,会从且仅从其添加(add)方法入手。

因为上一篇已经分析过ArrayList,相似的地方就不再叙述,关注点在LinkedList的特点。

属性:

技术分享
   /**
     *链表头
     */
    transient Node<E> first;

    /**
     * 链表尾
     */
    transient Node<E> last;
View Code

从以上两个属性可以得出LinkedList是基于双向链表实现的。

节点代码(无需过多解释):

技术分享
 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;
        }
    }
View Code

LinkedList的add方法:

LinkedList中有多个add方法,大同小异,遂选取其一进行分析。

/**
     * 插入指定元素到list尾部
     */
    public boolean add(E e) {
        linkLast(e);
        return true;
    }
    /**
     * Links e as last element.
     */
    void linkLast(E e) {
        final Node<E> l = last;
        final Node<E> newNode = new Node<>(l, e, null);
        last = newNode;
        if (l == null)
            first = newNode;
        else
            l.next = newNode;
        size++;
        modCount++;//此系列博客中有详细解释
    }

以上是关于jdk源码阅读笔记之java集合框架(LinkedList)的主要内容,如果未能解决你的问题,请参考以下文章

jdk源码阅读笔记之java集合框架(LinkedList)

JDK源码及其他框架源码解析随笔地址导航

Java集合框架源码阅读之AbstractCollection

Java Jdk1.8 HashMap源码阅读笔记一

源码详解数据结构Linked List

源码阅读Java集合 - ArrayList深度源码解读