比較 Enumeration 與 Iterator 遍歷集合的差異,說明 Iterator 支援 remove() 安全刪除、適用範圍更廣 (List、Set、Map) 的設計優勢。
Enumeration e = v.elements();
while (e.hasMoreElements()) {
Customer c = (Customer) e.nextElement(); // 需強制轉型
}
缺點:遍歷過程中刪除元素效果不佳,建議改用 Iterator。
Iterator it = v.iterator(); // 亦適用 ArrayList, HashTable 等
while (it.hasNext()) {
Customer c = (Customer) it.next(); // 同樣需強制轉型
// 安全刪除:it.remove(); // 僅移除上次 next() 回傳的元素
}
| Enumeration | Iterator |
|---|---|
hasMoreElements() | hasNext() |
nextElement() | next() |
| 無 | remove() |
Vector 內部採用順序儲存 (陣列),動態擴容效率較差。Iterator 設計為游標模式,底層可對應鏈結串列等結構,與集合修改同步性更好。for (E e : coll)),Enumeration 僅維護舊版 API 相容性。