Iterator功能更强且支持删除与fail-fast,优先用于现代集合遍历;Enumeration仅用于旧类兼容,不支持删除,已逐渐淘汰。

Java 中 Iterator 和 Enumeration 都是用于遍历集合元素的接口,但它们在设计时间、功能特性以及使用场景上存在明显差异。 下面从区别和使用方法两个方面进行详细说明。
1. 主要区别
Iterator 是较新的接口,出现在 JDK 1.2 中,作为 Enumeration 的替代者,广泛用于 Collection 框架中。Enumeration 更早,主要用于早期类如 Vector 和 Hashtable。
-
出现版本不同:Enumeration 来自 JDK 1.0,Iterator 出现在 JDK 1.2。
-
安全性与灵活性:Iterator 支持在遍历过程中安全地删除元素(通过 remove() 方法),而 Enumeration 不支持删除操作。
-
方法命名更直观:Iterator 使用 hasNext() 和 next(),比 Enumeration 的 hasMoreElements() 和 nextElement() 更简洁。
-
应用范围不同:现代集合类(如 ArrayList、HashSet)返回的是 Iterator;旧式类(如 Vector)仍支持 Enumeration。
-
fail-fast 机制:Iterator 多数实现具备 fail-fast 能力(检测并发修改),Enumeration 则无此机制。
2. Iterator 使用方法
Iterator 是最常用的遍历方式之一,适用于所有实现了 Collection 接口的集合。
常用方法:
立即学习“Java免费学习笔记(深入)”;
- boolean hasNext():判断是否还有下一个元素。
- E next():返回下一个元素。
- void remove():删除上一次 next() 返回的元素(可选操作)。
示例代码:
List list = new ArrayList();
list.add("A");
list.add("B");
list.add("C");
Iterator it = list.iterator();
while (it.hasNext()) {
String item = it.next();
System.out.println(item);
// 可以安全删除
if ("B".equals(item)) {
it.remove();
}
}
3. Enumeration 使用方法
Enumeration 主要用于遗留类,比如 Vector 或 Hashtable,虽然功能有限,但在某些老系统中仍可见到。
常用方法:
立即学习“Java免费学习笔记(深入)”;
- boolean hasMoreElements():判断是否还有更多元素。
- E nextElement():获取下一个元素。
示例代码:
Vector vector = new Vector();
vector.add("X");
vector.add("Y");
vector.add("Z");
Enumeration en = vector.elements();
while (en.hasMoreElements()) {
String item = en.nextElement();
System.out.println(item);
}
4. 如何选择使用哪个接口
在实际开发中应优先使用 Iterator,除非你在维护非常老的代码或必须使用 Vector/Hashtable 等类。
- 需要删除元素时,只能用 Iterator。
- 新项目建议使用 Iterator 或增强 for 循环(底层也是 Iterator)。
- Enumeration 仅作兼容用途,不推荐新代码中使用。
基本上就这些。Iterator 功能更强、更安全,是现代 Java 编程的标准做法。Enumeration 虽然简单,但已逐渐被淘汰。理解两者的区别有助于正确处理不同类型的集合遍历需求。
以上就是Java Iterator和Enumeration接口区别及使用方法的详细内容,更多请关注php中文网其它相关文章!