在Java中,迭代器(Iterator)是一种用于遍历集合(如List
、Set
等)的接口。它提供了一种统一的方式来访问集合中的元素,而无需暴露集合的内部结构。以下是迭代器的基本使用方法和一个示例代码。
迭代器的主要方法
-
hasNext()
:判断是否还有下一个元素。 -
next()
:返回集合中的下一个元素。 -
remove()
:可选操作,用于删除上一次next()
返回的元素。
示例代码
以下代码展示了如何使用迭代器遍历一个ArrayList
并删除符合条件的元素。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExample {
public static void main(String[] args) {
// 创建一个ArrayList并添加一些元素
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
list.add("Date");
// 使用迭代器遍历集合
System.out.println("遍历集合并打印所有元素:");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String fruit = iterator.next();
System.out.println(fruit);
}
// 使用迭代器删除符合条件的元素(例如删除以'B'开头的元素)
System.out.println("\n删除以'B'开头的元素后:");
iterator = list.iterator(); // 重新获取迭代器
while (iterator.hasNext()) {
String fruit = iterator.next();
if (fruit.startsWith("B")) {
iterator.remove(); // 使用迭代器的remove方法删除元素
}
}
// 再次遍历集合查看结果
System.out.println("当前集合中的元素:");
for (String fruit : list) {
System.out.println(fruit);
}
}
}
输出结果
遍历集合并打印所有元素:
Apple
Banana
Cherry
Date
删除以'B'开头的元素后:
当前集合中的元素:
Apple
Cherry
Date
注意事项
-
线程安全:迭代器本身不是线程安全的。如果在多线程环境中使用迭代器,需要额外的同步机制。
-
ConcurrentModificationException
:在遍历集合时,不能直接修改集合的结构(如添加或删除元素),否则会抛出ConcurrentModificationException
。如果需要修改集合,必须使用迭代器的remove()
方法。 -
forEachRemaining
方法:从Java 8开始,Iterator
接口还提供了一个forEachRemaining
方法,可以更方便地遍历剩余的元素。