ArrayList 和 LinkedList 淺讀

集合框架體系圖:

ArrayList

ArrayList是一個泛型類,長度動態,不受限制,只能存儲對象。例:ArrayList<String> list = new ArrayList<String>();
ArrayList繼承於接口List,是一個List的實現類。數組

LinkedList

LinkedList繼承於AbstractSequentialList,一個雙向鏈表,可被看成堆棧,隊列或者雙端隊列使用。
節點類Entry:element存放業務數據,previous與next存放先後節點信息。

雙向鏈表結構數據圖: 數據結構

實現 get(int location), remove(int location)等根據索引值來獲取,刪除節點的函數。首先比較location和雙向鏈表長度的1/2,決定從頭仍是尾開始查找(for循環)。

ArrayList 和 LinkedList 的區別

本質上是數組和鏈表數據結構上的區別。
框架

  1. ArrayList插入元素後,須要移動插入位置後的全部元素,LinkedList有在頭尾增刪的方法。(沒有ArrayList的擴容問題)
  2. ArrayList執行get(int index),直接返回index上的元素。
  3. ArrayList耗時在System.arraycopy,LinkedList耗時在查找數據。
  4. ArrayList內存使用量大,添加元素效率低,隨機訪問效率高,LinkedList相反。
相關文章
相關標籤/搜索