Java学习篇之---LinkedList

LinkedList

java.util.LinkedList是双向链表。

LinkedList的两个remove方法,remove(Object)和remove(int)的时间复杂度都是O(n),在链表元素很多 并且没有索引可用的情况下,LinkedList也并不适合做随机增删元素。在对性能特别敏感的场景下,还是需要自己实现专用的双向链表结构,真正实现 O(1)级别的随机增删。更进一步,jdk5引入的ConcurrentLinkedQueue是一个非阻塞的线程安全的双向队列实现。

理论上说,双向链表的删除的时间复杂度是O(1),你只需要将要删除的节点的前节点和后节点相连,然后将要删除的节点的前节点和后节点置为null即可:

//伪代码
  node.prev.next=node.next;
  node.next.prev=node.prev;
  node.prev=node.next=null;

注意:

ArrayList和LinkedList的区 别之在什么场景下用:

大家都会说LinkedList随机增删多的场景比较合适,而ArrayList的随机访问多的场景比较合适。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章