基本類型包裝類:橋接基本類型與對象世界
| 基本類型 | 包裝類 | 核心常量/方法 |
| byte | Byte | MIN_VALUE, MAX_VALUE, parseByte(), toString() |
| short | Short | 同上 |
| int | Integer | parseInt(s, radix), toBinaryString(), valueOf() 緩存 [-128,127] |
| long | Long | parseLong() |
| float | Float | isNaN(), isInfinite() |
| double | Double | 同上 |
| boolean | Boolean | TRUE, FALSE, valueOf() |
| char | Character | isDigit(), isLetter(), toUpperCase() |
三向轉換:int ↔ Integer ↔ String,valueOf() 優於構造器(緩存),parseInt() 拋 NumberFormatException。
Collection 體系架構圖
Collection (I)
├── List (I) // 有序、可重複、有索引
│ ├── ArrayList // 數組底層,查詢快 O(1),增刪慢 O(n),非同步,擴容 1.5倍
│ ├── LinkedList // 雙向鏈表,增刪快 O(1),查詢慢 O(n),非同步,實現 Deque
│ └── Vector // 數組底層,同步(慢),擴容 2倍,已過時
└── Set (I) // 無序、不可重複
├── HashSet // HashMap 底層,O(1),非同步,依賴 hashCode/equals
├── LinkedHashSet // 維護插入順序
└── TreeSet // 紅黑樹,O(log n),有序(自然/定製),依賴 compareTo/Comparator
List 選型指南
- 頻繁隨機訪問 →
ArrayList
- 頻繁頭尾增刪/棧/隊列 →
LinkedList(offerFirst/pollLast 等 Deque 方法)
- 需線程安全 →
Collections.synchronizedList 或 CopyOnWriteArrayList
- 去重存入 → 重寫
equals()(contains/add/remove 依賴它)
Set 去重機制
| Set 類型 | 判等邏輯 | 注意事項 |
| HashSet | 先 hashCode(),相同再 equals() | 自定義類必須重寫兩者,保持一致性 |
| TreeSet | compareTo() 返回 0 視為重複 | 元素實現 Comparable 或構造傳 Comparator |
Map 體系
Map (I)
├── HashMap // 數組+鏈表/紅黑樹(JDK8),非同步,允許 null key/value
├── LinkedHashMap// 維護插入/訪問順序
├── TreeMap // 紅黑樹,Key 有序,非同步
├── Hashtable // 同步,不允許 null,已過時
└── Properties // 專用配置,鍵值皆 String
遍歷模式:keySet() + get()、entrySet()(推薦)、JDK8 forEach((k,v)->...)。
核心輔助介面與工具類
| 介面/類 | 用途 |
| Iterator | 單向遍歷,可 remove() |
| ListIterator | 雙向遍歷,可 add/set/previous |
| Comparable<T> | 類內部自然排序 compareTo(T) |
| Comparator<T> | 外部定製排序 compare(T,T),Strategy 模式 |
| Collections | sort/shuffle/reverse/singletonList/emptyList/synchronizedXxx |
| Arrays | sort/binarySearch/toList/stream/parallelSort |
實戰避坑清單
- 併發修改異常:遍歷中直接
list.remove() → 用 Iterator.remove() 或 removeIf()。
- HashMap 多線程死循環:JDK7 擴容鏈表倒序導致環 → 改用
ConcurrentHashMap。
Arrays.asList() 返回固定長度列表,不可 add/remove。
HashSet 存儲可變對象後修改字段導致 hashCode 變化 → 取不出來,視為內存洩漏。