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的隨機訪問多的場景比較合適。

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