1. 程式人生 > >Java知識點總結(Java容器-LinkedList)

Java知識點總結(Java容器-LinkedList)

LinkedList

底層實現是雙向迴圈連結串列,所以增刪元素效率高,查詢慢。執行緒安全

ArrayList和LinkedList比較

  1. ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構
  2. 對於水機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標
  3. 對於新增和刪除操作add和remove,LinkedList比較佔優勢,因為ArrayList要移動資料

這一點要看實際情況的。若只對單條資料插入或刪除,ArrayList的速度反而優於LinkedList。但若是批量隨機的插入刪除資料,LinkedList的速度大大優於ArrayList. 因為ArrayList每插入一條資料,要移動插入點及之後的所有資料。

手寫LinkedList

public  class MyLinkedList /*implements List<E>*/{
  private Node first;
  private Node last;
  private int size ;
  
  //新增元素
  publicvoidadd(Object obj) {
    if (first == null) {
      Node n = new Node(null,obj,null);
      first = n;
      last = n;
    }else {
      //直接往last後增加新的節點
Node n = new Node(last, obj, null); last.setNext(n); last = n; } size++; } //獲取元素 publicObjectget(int index) throws Exception { return getNode(index).getObj(); } //刪除元素 publicboolean remove(int index) throws Exception { boolean flag = false; Node temp = getNode(index); if
(temp!=null) { temp.getPreview().setNext(temp.getNext()); temp.getNext().setPreview(temp.getPreview()); size--;