Collection 定義 iterator(),所有子類統一遍歷介面
// 推薦:for-each 隱式迭代器(Java 5+)
for (String s : list) { ... }
// 顯式:需手動處理併發修改異常
Iterator it = list.iterator();
while (it.hasNext()) { String s = it.next(); }
Enumeration,支援 remove()next() 返回 Object 需轉型(泛型後自動推導)add(index, e), addAll(index, c)remove(index), set(index, e), get(index)indexOf(o), lastIndexOf(o), subList(from, to)| 實現類 | 資料結構 | 同步 | 查詢 | 增刪 | 適用場景 |
|---|---|---|---|---|---|
| ArrayList | 動態陣列 | 否 | 快 O(1) | 慢 O(n) | 隨機存取頻繁、末尾增刪 |
| LinkedList | 雙向鏈表 | 否 | 慢 O(n) | 快 O(1) | 頻繁頭尾/中間增刪、佇列/棧 |
| Vector | 動態陣列 | 是 | 快 | 慢 | 舊版遺留,已被 ArrayList+同步包裝取代 |
addFirst/Last, offerFirst/Last, getFirst/Last, peekFirst/Last, removeFirst/Last, pollFirst/Last
HashMap,O(1) 存取hashCode() 不同 → 直接存入;相同 → 再比 equals()
// 1. 實體實作 Comparable
class Person implements Comparable {
public int compareTo(Person o) { return this.age - o.age; }
}
// 2. 傳入 Comparator
new TreeSet<>((a,b) -> b.age - a.age); // 降序
需要唯一? → Set
├ 需要排序? → TreeSet (Comparator/Comparable)
├ 需要插入序? → LinkedHashSet
└ 否 → HashSet (重寫 hashCode/equals)
不需要唯一? → List
├ 頻繁增刪? → LinkedList
└ 否 → ArrayList
ArrayList/LinkedList → List;HashSet/TreeSet → SetArray → 陣列(查詢快、有索引);Link → 鏈表(增刪快、首尾操作);Hash → 雜湊(唯一、重寫 hashCode/equals);Tree → 紅黑樹(排序、Comparable/Comparator)掌握集合框架核心特性,是寫出高效、正確 Java 程式的基礎。