聊一聊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)元素是有序的,输出顺序与输入顺序一致