整體架構分層
java.util
├── Collection (接口)
│ ├── List (有序、可重複)
│ │ ├── ArrayList (動態數組、隨機訪問快)
│ │ ├── LinkedList (雙向鏈表、增刪快、實現 Deque)
│ │ ├── Vector (同步、舊版)
│ │ └── Stack (Vector 子類、LIFO)
│ └── Set (無序、不可重複)
│ ├── HashSet (HashMap 底層、O(1))
│ ├── LinkedHashSet (有序 HashSet)
│ └── TreeSet (TreeMap 底層、紅黑樹、有序)
├── Map (鍵值對、Key 不重複)
│ ├── HashMap (數組+鏈表/紅黑樹、非同步、允許 null)
│ ├── LinkedHashMap (插入/訪問順序)
│ ├── TreeMap (紅黑樹、SortedMap、Key 有序)
│ ├── Hashtable (同步、不允許 null、舊版)
│ └── WeakHashMap (弱引用 Key、GC 可回收)
├── 迭代器
│ ├── Iterator (單向、fail-fast、可 remove)
│ └── ListIterator (雙向、可 add/set、僅 List)
└── 工具類
├── Collections (排序、二分查找、同步包裝、不可變視圖)
└── Arrays (數組排序、複製、比較、流轉換)
核心接口契約
| 接口 | 關鍵特性 | 典型實現 |
| Collection | add/remove/contains/size/iterator | — |
| List | 按索引訪問 get/set/add(index)/subList | ArrayList, LinkedList |
| Set | 無重複、equals/hashCode 判等 | HashSet, TreeSet |
| Map | put/get/remove/keySet/entrySet/values | HashMap, TreeMap |
抽象骨架類
AbstractCollection:實現除 iterator/size 外所有方法
AbstractList:實現 List 非隨機訪問方法,提供 listIterator
AbstractSet:繼承 AbstractCollection,Set 無額外方法
AbstractMap:實現 Map 大部分方法,子類只需實現 entrySet
選型決策樹
- 需鍵值對 → Map
- 需有序 → TreeMap / LinkedHashMap
- 高併發 → ConcurrentHashMap
- 一般 → HashMap
- 需單列數據 → Collection
- 需有序、可重複 → List
- 隨機訪問多 → ArrayList
- 頭尾增刪多 → LinkedList
- 不可重複 → Set
- 需有序 → TreeSet / LinkedHashSet
- 一般 → HashSet
並發安全集合