简介
- 继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作
- 实现 List 接口,能对它进行队列操作
- 实现 Deque 接口,即能将LinkedList当作双端队列使用
- 实现了Cloneable接口,能克隆
- 实现java.io.Serializable接口,能通过序列化去传输
- 是非同步的
数据结构
- header:双向链表的表头,为Entry类的实例
- size:双向链表中节点的个数
注:Entry中包含成员变量: previous, next, element。其中,previous是该节点的上一个节点,next是该节点的下一个节点,element是该节点所包含的值
遍历方式
- 迭代器遍历
- 随机访问:如list.get(i);效率低
- pollFirst():while(list.pollFirst() != null)
- pollLast():while(list.pollLast() != null)
- removeFirst():while(list.removeFirst() != null)
- removeLast():while(list.removeLast() != null)
特性说明
- 双向链表顺序访问高效,随机访问效率低
- 如何支持索引(随机)访问(即方法*get(int location)*):首先会比较“location”和“双向链表长度的1/2”;若前者大,则从链表头开始往后查找,直到location位置;否则,从链表末尾开始先前查找,直到location位置
- 不存在容量不足的问题
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!
本文出自:monkeyGeek
座右铭:生于忧患,死于安乐
欢迎志同道合的朋友一起交流、探讨!
