java.util.Collection (介面)
├── List (有序、可重複)
│ ├── ArrayList (動態數組、隨機訪問快)
│ ├── LinkedList (雙向鏈表、首尾增刪快)
│ ├── Vector (同步、舊版、已被 ArrayList 取代)
│ └── Stack (Vector 子類、後進先出)
├── Set (無序、不可重複)
│ ├── HashSet (HashMap 鍵、哈希表、O(1))
│ ├── LinkedHashSet (鏈表維護插入順序)
│ └── TreeSet (紅黑樹、有序、O(log n))
└── Queue (佇列)
├── PriorityQueue (堆、優先級)
├── ArrayDeque (雙端佇列、環狀數組)
└── BlockingQueue (介面)
├── ArrayBlockingQueue (有界數組)
├── LinkedBlockingQueue (有界/無界鏈表)
└── ...
java.util.Map (介面)
├── HashMap (哈希表、JDK8 鏈表轉紅黑樹)
├── LinkedHashMap (雙向鏈表維護順序、LRU 基石)
├── TreeMap (紅黑樹、有序鍵)
├── Hashtable (同步、舊版)
├── WeakHashMap (弱引用鍵、緩存場景)
├── IdentityHashMap (== 比較鍵)
└── ConcurrentMap (介面)
├── ConcurrentHashMap (分段鎖/CAS、高併發)
└── ConcurrentSkipListMap (跳表、有序並發)
| 類別 | 底層結構 | 有序性 | 線程安全 | Null 鍵/值 | 典型場景 |
|---|---|---|---|---|---|
| ArrayList | 動態數組 | 插入序 | 否 | 允許 | 隨機訪問、順序遍歷 |
| LinkedList | 雙向鏈表 | 插入序 | 否 | 允許 | 首尾增刪、佇列/棧 |
| HashSet | HashMap | 無序 | 否 | 允許一個 null | 去重、集合運算 |
| LinkedHashSet | HashMap+鏈表 | 插入序 | 否 | 允許一個 null | 保持插入順序去重 |
| TreeSet | 紅黑樹 | 自然序/比較器 | 否 | 不允許 null | 有序去重、範圍查詢 |
| HashMap | 數組+鏈表/紅黑樹 | 無序 | 否 | 允許一個 null key | 高性能 KV 存取 |
| LinkedHashMap | HashMap+雙向鏈表 | 插入/訪問序 | 否 | 允許一個 null key | LRU 緩存、有序遍歷 |
| TreeMap | 紅黑樹 | 自然序/比較器 | 否 | 不允許 null key | 有序 KV、範圍查詢 |
| ConcurrentHashMap | 數組+鏈表/紅黑樹+CAS | 無序 | 是 (分段/細粒度) | 不允許 null | 高併發 KV |
Java 集合框架以 Collection/Map 為雙根介面,提供豐富實現滿足不同性能/併發/有序需求。掌握架構圖譜、核心類特性對比、選型決策樹,能在開發中精準選擇最適集合,面試時從容應對源碼級追問。