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类的区别