1. 程式人生 > >ArrayList和LinkedList的基本用法以及區別

ArrayList和LinkedList的基本用法以及區別


Java學習筆記之ArrayList基本用法ArrayList簡介ArrayList是一個其容量能夠動態增長的動態陣列。它繼承了AbstractList,實現了ListRandomAccess, Cloneable, java.io.Serializable。基本的ArrayList,長於隨機訪問元素,但是在List中間插入和移除元素時較慢。同時,ArrayList的操作不是執行緒安全的!一般在單執行緒中才使用ArrayList,而在多執行緒中一般使用Vector或者CopyOnWriteArrayList。ArrayList遍歷方式ArrayList有三種遍歷方式迭代器遍歷Iterator<Integer> it = arrayList.iterator();while(it.hasNext()){ System.out.print(it.next() + " ");}
索引值遍歷for(int i = 0; i < arrayList.size(); i++){ System.out.print(arrayList.get(i) + " ");}for迴圈遍歷for(Integer number : arrayList){ System.out.print(number + " ");}需要說明的是,遍歷ArrayList時,通過索引值遍歷效率最高,for迴圈遍歷次之,迭代器遍歷最低。Java學習筆記之LinkedList基本用法LinkedList簡介
  • LinkedList 是一個繼承於AbstractSequentialList的雙向連結串列。它也可以被當作堆疊、佇列或雙端佇列進行操作。
  • LinkedList 實現 List 介面,能進行佇列操作。
  • LinkedList 實現 Deque 介面,即能將LinkedList當作雙端佇列使用。
  • ArrayList底層是由陣列支援,而LinkedList 是由雙向連結串列實現的,其中的每個物件包含資料的同時還包含指向連結串列中前一個與後一個元素的引用。
LinkedList遍歷方式LinkedList有以下幾種遍歷方式:迭代器遍歷Iterator<Integer> iterator = linkedList.iterator();while(iterator.hasNext()){ iterator.next();}for迴圈get()遍歷for(int i = 0; i < linkedList.size(); i++){ linkedList.get(i);}
Foreach迴圈遍歷for(Integer i : linkedList);通過pollFirst()或pollLast()遍歷while(linkedList.size() != 0){ linkedList.pollFirst();}通過removeFirst()或removeLast()遍歷while(linkedList.size() != 0){ linkedList.removeFirst();}