add、remove、iterator 等),List、Set、Queue 繼承它。無繼承關係。
Collection 存儲「單一對象」序列;
Map 存儲「鍵值對」映射。
| 維度 | Hashtable | HashMap |
|---|---|---|
| 線程安全 | 同步(方法級鎖) | 非同步(需手動同步或用 ConcurrentHashMap) |
| Null 鍵/值 | 不允許 | 允許(一個 null key,多個 null value) |
| 遍歷方式 | Enumeration | Iterator |
| hash 計算 | 直接用 key.hashCode() | 擾動函數重新計算,& (n-1) 替代取模 |
| 默認容量/擴容 | 11,old*2+1 | 16(2 的冪),old*2 |
| 推薦程度 | 過時,不推薦 | 首選 |
Collection├─ List (有序、可重複、可為 null) │ ├─ ArrayList (非同步、數組、查快) │ ├─ LinkedList (非同步、雙向鏈表、增刪快) │ ├─ Vector (同步、數組、性能差) │ └─ Stack (Vector 子類) ├─ Set (無序、不可重複、最多一個 null) │ ├─ HashSet (基於 HashMap) │ │ └─ LinkedHashSet (維護插入順序) │ └─ SortedSet │ └─ TreeSet (紅黑樹、有序) └─ Queue └─ Deque ├─ ArrayDeque (推薦) └─ LinkedList Map (無序、鍵唯一) ├─ Hashtable (同步、過時) ├─ HashMap (非同步、首選、允許 null) │ └─ LinkedHashMap (維護插入/訪問順序) ├─ WeakHashMap (Key 弱引用、GC 可回收) └─ SortedMap └─ TreeMap (紅黑樹、有序)
ArrayList / HashMap / HashSetLinkedList / LinkedHashMap / LinkedHashSetTreeSet / TreeMap / LinkedHashSet / LinkedHashMapConcurrentHashMap / CopyOnWriteArrayList / Collections.synchronizedXxx()WeakHashMaphashCode()equals() **必須** 覆寫 hashCode()Set 元素或 Map Key 的自定義類,**強制** 正確實現雙方法Iterator<E> it = collection.iterator();
while (it.hasNext()) {
E e = it.next();
// 安全刪除:it.remove(); // 僅可調用一次 per next()
}
ListIterator 額外支援雙向遍歷、索引定位、添加/修改。
Java 集合框架核心在於 介面與實現分離、數據結構特性選型、equals/hashCode 契約。掌握上述體系圖、差異表、選型口訣,即可應對 90% 實務場景。面試高頻考點:HashMap 擴容/紅黑樹轉換、ConcurrentHashMap 分段鎖/CAS、ArrayList vs LinkedList、HashSet 去重原理。