码迷,mamicode.com
首页 > 编程语言 > 详细

Java集合类-LinkedList分析

时间:2017-10-12 00:58:41      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:size   item   on()   private   move   except   线程   集合类   rem   

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分析

标签:size   item   on()   private   move   except   线程   集合类   rem   

原文地址:http://www.cnblogs.com/zj90/p/7653503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!