增强for循环(也称为"foreach"循环)和迭代器(Iterator)都是Java中用于遍历集合(如数组、列表、集合等)
的工具。
增强for循环(Enhanced For Loop)
增强for循环是Java 5引入的一种更简洁的遍历集合的方式。它主要用于数组和实现了Iterable
接口的集合类(如List
, Set
等)。
语法
java
for (ElementType element : collection) {
// 对element进行操作
}
示例
java
List<String> list = Arrays.asList("a", "b", "c");
for (String s : list) {
System.out.println(s);
}
特点
- 适用于
遍历数组
和实现了Iterable接口的集合
。 - 在循环体内
不能修改集合的结构(例如添加或删除元素)
,否则可能会抛出ConcurrentModificationException
的异常。
迭代器(Iterator)
迭代器是一个设计模式,它使得程序员能够顺序地访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示,
在Java中,Iterator
接口定义了遍历集合元素的方法。
主要方法
hasNext()
: 检查是否还有更多元素。next()
: 返回集合的下一个元素。remove()
: 从集合中移除由最近一次next()
方法返回的元素。
示例
java
List<String> list = Arrays.asList("a", "b", "c");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String s = iterator.next();
System.out.println(s);
}
特点
- 提供了更灵活的控制,可以在遍历过程中删除元素。
- 适用于所有实现了
Iterable
接口的集合,因为Iterable
接口要求实现一个返回Iterator
的方法。 - 相比增强for循环,迭代器提供了更多的控制和更细粒度的访问,尤其是在需要修改集合结构时。
增强for循环与迭代器的比较
- 简洁性:增强for循环语法更简洁,更易于阅读。
- 功能:迭代器提供了更多的功能,如删除元素和更细粒度的控制。
- 适用场景:增强for循环适用于只读遍历场景,而迭代器适用于需要修改集合结构或需要更细粒度控制的场景。
在大多数情况下,如果只需要遍历集合并不修改它,增强for循环是一个很好的选择;
如果需要更复杂的操作,比如同时遍历多个集合或需要在遍历过程中修改集合,那么迭代器可能更适合。