Java集合类-LinkedList分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合类-LinkedList分析相关的知识,希望对你有一定的参考价值。

LinkedList的特点

非线程安全
支持序列化
双向链表

成员变量

transient int size = 0;
transient Node<E> first; // 指向第一个元素
transient Node<E> last; // 指向最后一个元素

链表结点,三个属性:元素、上一结点、下一结点

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

 

基本方法

增 add

public boolean add(E e) {
    linkLast(e);
    return true;
}

void linkLast(E e) {
    final Node<E> lastTmp = last;
    final Node<E> newNode = new Node<>(lastTmp, e, null);
    last = newNode;
    if (lastTmp == null)
        first = newNode;
    else
        lastTmp.next = newNode;
    size++;
    modCount++;
}

 

删 remove

public E removeLast() {
    final Node<E> l = last;
    if (l == null)
        throw new NoSuchElementException();
    return unlinkLast(l);
}

private E unlinkLast(Node<E> l) {
    // assert l == last && l != null;
    final E element = l.item;
    final Node<E> prev = l.prev;
    l.item = null;
    l.prev = null; // help GC
    last = prev;
    if (prev == null)
        first = null;
    else
        prev.next = null;
    size--;
    modCount++;
    return element;
}

 

改 set

查 get

扩容原理

向后增加新结点

一些问题

参考

http://blog.csdn.net/ns_code/article/details/35787253

 



以上是关于Java集合类-LinkedList分析的主要内容,如果未能解决你的问题,请参考以下文章

Java集合框架 List接口实现类--LinkedList类的使用 & 源码分析 & LinkedList与ArrayList类的区别

java集合系列之LinkedList源码分析

Java集合源码分析之 LinkedList

LinkedList源码和并发问题分析

LinkedList源码和并发问题分析

java集合类源码分析之List