聊一聊LinkedList的特点吧~(以下都是基于jdk1.8)
继承树 |
LinkedList的继承树如下图:
特点 |
(1)允许null值
(2)内部以双向链表的形式来保存集合中的元素
/**
* Pointer to first node.
* Invariant: (first == null && last == null) ||
* (first.prev == null && first.item != null)
*/
transient Node<E> first;
/**
* Pointer to last node.
* Invariant: (first == null && last == null) ||
* (last.next == null && last.item != null)
*/
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;
}
}
(3)实现了Deque接口,意味着可以当做双端队列、栈来使用
(4)线程不安全,线程安全的可以使用:List list = Collections.synchronizedList(new LinkedList(…));
(5)fail-fast机制
(6)所有指定位置的操作都是从头开始遍历进行的
(7)元素是有序的,输出顺序与输入顺序一致