Java容器之List小結

列表

List, ArrayList, LinkedList, ArrayCopyOnWriteList, Vector數組

簡述

1. 列表劃分爲線程安全和線程非安全兩類,其中:

線程安全: Vector, ArrayCopyWriteList安全

線程非安全:ArrayList, LinkedList性能

2. 底層存儲

數組: ArrayList Vecotr ArrayCopyWriteList線程

鏈表:LinkedListcode

3. 使用場景

ArrayList排序

  • 底層爲數組,適合隨機訪問
  • 動態插入刪除可能涉及到數組長度從新分配

LinkedList接口

  • 底層爲鏈表,適合頻繁刪除新增的場景
  • 隨機訪問不友好,須要遍歷

Vectorit

  • 線程安全
  • 全部的方法都加鎖,致使性能較差

CopyOnWriteArrayListio

  • 線程安全
  • 讀方法不加鎖;修改方法加鎖,一次只能一個線程訪問
  • 修改時,會拷貝一分內容出來,對拷貝的結果進行操做,最後覆蓋以前的內容

4. 特性

  • List 是有序的
  • ArrayList 默認空間大小爲10
  • new ArrayList<>() 內部的數組實際上引用的是一個空數組
  • ArrayList 擴容規則
    • 增長原來空間大小的一半
    • 若是依然塞不下,則擴充到正好填充滿的狀況
  • 排序
    • Collections.sort(list, new Comparator(){xxx})
    • List的內容,實現了Comparater接口後,能夠直接調用 Collections.sort(list);
相關文章
相關標籤/搜索