JDK 5.0 集合框架最大變革為泛型支援,讓集合能指定元素型別,編譯期型別安全。本文系統整理核心介面、迭代新寫法、排序查找、主流集合特性與選型指南。
public interface Collection { boolean add(E e); Iterator iterator(); }
public interface Iterator { E next(); boolean hasNext(); void remove(); }
// 5.0 前
Iterator it = c.iterator();
while (it.hasNext()) { String s = (String)it.next(); ... }
// 5.0 For-Each(適用所有實作 Iterable 的類別)
for (String s : c) { ... }
呼叫 remove() 前必須先呼叫 next(),否則拋出 IllegalStateException。連續刪除相鄰元素,每次刪除前皆需 next()。
Collections.sort(list):預設依 Comparable 自然順序。Collections.sort(list, comparator):自訂 Comparator。Collections.reverseOrder(comparator)。Collections.binarySearch():前提列表已排序且支援隨機存取(如 ArrayList),否則效率極低。| 集合 | 特性 | 適用場景 |
|---|---|---|
| ArrayList | 動態陣列、隨機存取快、中間增刪慢、非執行緒安全 | 單執行緒、頻繁隨機存取 |
| LinkedList | 雙向鏈表、順序存取、任意位置增刪快、get(n) 仍順序遍歷 | 頻繁頭尾增刪、佇列/棧 |
| HashSet | Hash 索引、無序、不重複 | 快速查找、去重 |
| TreeSet | 有序 Set(紅黑樹) | 需排序且不重複 |
| LinkedHashSet | 保持插入順序 | 需插入順序且不重複 |
| PriorityQueue | 優先權佇列、最小元素優先出佇 | 任務排程、最小值快速取出 |
| HashMap | Key/Value、非執行緒安全、效率優於 Hashtable | 一般鍵值對存儲 |
| TreeMap | Key 有序 Map | 需按 Key 排序 |
| LinkedHashMap | 保持插入順序 Map | 需插入順序的鍵值對 |
掌握泛型與集合特性,能寫出更安全、高效、可維護的程式碼。