LinkedList原理

简介

  • 继承于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

座右铭:生于忧患,死于安乐

欢迎志同道合的朋友一起交流、探讨!

monkeyGeek

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×