首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 集合框架精華:List、Set、Map 核心實現與常用 API 速查

     編輯:Java 綜合教學

集合體系宏觀視圖

Collection 接口雙雄:List(有序、可重複)與 Set(無序、唯一)。Map 獨立體系(鍵值對、鍵唯一)。掌握核心實現類的數據結構特性,是高效編程的基石。

一、List 族群

實現類底層結構線程安全核心特性適用場景
ArrayList動態數組❌隨機訪問 O(1),擴容 1.5倍,尾插摊還 O(1)默認首選,讀多寫少、需下標訪問
LinkedList雙向鏈表❌頭尾增刪 O(1),實現 Deque/Queue,遍歷緩存不友好頻繁頭尾/中間增刪、作為隊列棧
Vector動態數組✅ (synchronized)擴容 2倍,性能差,被 ArrayList + 同步包裝取代遺留代碼維護,新代碼勿用
CopyOnWriteArrayList數組+寫時復制✅ (無鎖讀)讀完全無鎖,寫入復制數組,適合讀極多寫極少事件監聽器列表、白名單配置

List 高頻 API

add(E e) / add(int index, E element)  // 添加
get(int index)                          // 隨機訪問
set(int index, E element)               // 替換
remove(int index) / remove(Object o)    // 刪除
indexOf / lastIndexOf                   // 查找位置
subList(int from, int to)               // 視圖切片(修改影響原列表)
toArray() / toArray(T[] a)              // 轉數組

二、Set 族群

實現類底層結構有序性線程安全核心特性
HashSetHashMap (散列表)無序❌增刪查 O(1),依賴 hashCode/equals
LinkedHashSetHashMap + 雙向鏈表插入序/訪問序❌保持插入順序,遍歷有序
TreeSet紅黑樹 (NavigableMap)自然序/定製序❌有序、範圍查詢 O(log n),元素需 Comparable/Comparator
CopyOnWriteArraySetCopyOnWriteArrayList插入序✅讀無鎖,寫復制

Set 高頻 API

add(E e) / addAll(Collection c)         // 添加(去重)
remove(Object o) / removeAll / retainAll // 刪除/差集/交集
contains(Object o)                      // 判斷包含
iterator() / spliterator()              // 遍歷

三、Map 族群

實現類底層結構有序性線程安全核心特性
HashMap數組+鏈表/紅黑樹 (JDK8)無序❌JDK8 鏈表轉樹優化,默認負載因子 0.75,擴容 2倍
LinkedHashMapHashMap + 雙向鏈表插入序/訪問序❌LRU 緩存基石
TreeMap紅黑樹自然序/定製序❌有序鍵、範圍查詢
Hashtable數組+鏈表無序✅ (synchronized)性能差,被 ConcurrentHashMap 取代
ConcurrentHashMap分段鎖 (JDK7) / CAS+synchronized (JDK8)無序✅ (高並發)高並發首選,JDK8 擴容並行化

Map 高頻 API

put(K, V) / putIfAbsent / computeIfAbsent  // 添加/條件添加
get(Object key) / getOrDefault               // 獲取
remove(Object key) / replace                 // 刪除/替換
keySet() / values() / entrySet()             // 視圖集合
forEach / merge / compute                    // JDK8 函數式操作

四、工具類:Arrays、Collections、Iterator

  • Arrays:asList(定長列表)、sort(雙軸快排/歸併)、binarySearch(有序前提)、copyOf、stream。
  • Collections:sort/shuffle/reverse/fill、synchronizedXxx(同步包裝)、unmodifiableXxx(不可變視圖)、max/min/frequency、binarySearch(List, key)。
  • Iterator:hasNext/next/remove(唯一安全刪除方式),ListIterator 增加 previous/add/set 支持雙向修改。
  • System.arraycopy:原生數組高效複製,ArrayList 擴容/插刪底層依賴它。

選型決策樹(簡化版)

需要鍵值對? → Map
  ├─ 高並發 → ConcurrentHashMap
  ├─ 需有序 → TreeMap / LinkedHashMap
  └─ 一般 → HashMap

不需要鍵值對? → Collection
  ├─ 需去重 → Set
  │   ├─ 需有序 → LinkedHashSet / TreeSet
  │   └─ 一般 → HashSet
  └─ 可重複 → List
      ├─ 頻繁隨機訪問 → ArrayList
      ├─ 頻繁頭尾增刪 → LinkedList / ArrayDeque
      └─ 讀多寫極少 → CopyOnWriteArrayList
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved