iterator 是 java 中用于安全遍历集合的接口,通过 hasnext() 和 next() 实现标准遍历,删除元素须用其 remove() 方法,增强 for 循环底层即基于 iterator。

Iterator 是 Java 中专门用于遍历集合(如 List、Set、Map 的 keySet 或 values)的接口,它提供了一种统一、安全、解耦的遍历方式,避免直接操作集合内部结构。
获取 Iterator 对象
所有实现了 Collection 接口的集合(如 ArrayList、HashSet、LinkedList)都提供 iterator() 方法,返回一个 Iterator 实例:
- List
list = Arrays.asList("a", "b", "c"); - Iterator
it = list.iterator();
用 hasNext() 和 next() 安全遍历
标准遍历模式是先判断是否有下一个元素,再获取它。这是最常用、最推荐的方式:
- while (it.hasNext()) {
- String item = it.next(); // 每次调用 next() 返回当前元素并自动移到下一位
- System.out.println(item);
- }
⚠️ 注意:不能在没有 hasNext() 检查时连续调用 next(),否则抛出 NoSuchElementException。
遍历时删除元素要用 remove()
如果需要边遍历边删除,必须使用 Iterator 自带的 remove() 方法(只能删上一次 next() 返回的元素),不能调用集合自身的 remove(),否则会触发 ConcurrentModificationException:
- while (it.hasNext()) {
- String s = it.next();
- if ("b".equals(s)) it.remove(); // 安全删除
- }
增强 for 循环本质就是 Iterator
Java 的 for-each 语法(如 for (String s : list))底层由编译器自动转为 Iterator 遍历,简洁且不易出错,但无法在循环中修改集合结构(如删除)。若需修改,仍应显式使用 Iterator。











