Iterator是Java遍历集合的标准方式,支持安全删除元素;提供hasNext()、next()和remove()三个核心方法,需按顺序调用且不可回退,非线程安全。

Java 中 Iterator 迭代器是遍历集合的标准方式,安全、通用,且支持在遍历时删除元素(避免 ConcurrentModificationException)。
Iterator 基本用法
所有 Collection 接口的实现类(如 ArrayList、HashSet、LinkedList)都提供 iterator() 方法,返回一个 Iterator 对象。它有三个核心方法:
- hasNext():判断是否还有下一个元素,返回 boolean
- next():返回下一个元素,若无元素则抛出 NoSuchElementException
- remove():删除上一次调用 next() 返回的元素(可选操作,部分实现不支持)
标准 while 循环遍历
这是最常见、最推荐的写法,清晰体现迭代逻辑:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
List<String> list = Arrays.asList("a", "b", "c");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String item = it.next();
System.out.println(item);
}
遍历时安全删除元素
直接用 for-each 或普通 for 循环删除会抛异常;必须用 Iterator 的 remove() 方法:
立即学习“Java免费学习笔记(深入)”;
List<Integer> nums = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Iterator<Integer> it = nums.iterator();
while (it.hasNext()) {
Integer n = it.next();
if (n % 2 == 0) {
it.remove(); // 安全删除偶数
}
}
// nums 变为 [1, 3, 5]
注意点和常见误区
- Iterator 是单向、一次性的:不能回退,也不能重复使用(遍历完再调 next() 会抛异常)
- remove() 必须紧跟在 next() 之后调用,否则抛 IllegalStateException
- 多个线程同时访问同一个集合并修改时,Iterator 仍可能失效——它不是线程安全的,需额外同步
- for-each 循环底层就是基于 Iterator 实现的,所以 for-each 中也不能直接调用集合的 remove()

















