| 容器 | 特點 | 適用場景 |
|---|---|---|
| ArrayList | 動態數組,隨機訪問 O(1),擴容 1.5 倍 | 大量讀、少量寫,末尾增刪 |
| LinkedList | 雙向鏈表,首尾增刪 O(1),隨機訪問 O(n) | 頻繁頭尾/中間增刪,實現 Queue/Deque/Stack |
| HashSet | 基於 HashMap,無序、去重、查找 O(1) | 去重、快速判斷存在性 |
| TreeSet | 紅黑樹,有序、去重、O(log n) | 需要排序的無重複集合 |
| HashMap | 數組+鏈表/紅黑樹,Key 唯一,查找 O(1) | 鍵值映射、高頻查找 |
| TreeMap | 紅黑樹,Key 有序 | 需要按 Key 排序遍歷 |
| Queue/Deque | LinkedList 實現,FIFO/雙端 | 生產消費、BFS、滑動窗口 |
| Stack | Vector 子類,LIFO,同步 | 遞歸替換、表達式求值(建議用 Deque) |
ClassCastException「結構不佳的代碼不能運行。」—— Java 強制在編譯期處理受檢異常,逼迫開發者正視錯誤路徑。
Throwable
├── Error(系統級,不可恢復:OOM、StackOverflow)
└── Exception
├── RuntimeException(非受檢:空指針、越界、類轉換)
└── 受檢異常(IOException、SQLException、ClassNotFoundException…)
throw new BizException("msg", cause) 保留堆棧。try-with-resources(Java 7+)自動調用 close()。@throws 聲明方法可能拋出的受檢異常及條件。try (InputStream in = new FileInputStream("a.txt");
OutputStream out = new FileOutputStream("b.txt")) {
// 代碼
} catch (IOException | SecurityException e) {
log.error("文件複製失敗", e);
throw new BizException(e);
}
掌握容器選型邏輯與異常處理哲學,能讓代碼既「快」又「穩」,是從「會用 API」進階到「懂設計」的關鍵一步。