Iterator遍历Set集合需先调用set.iterator()获取迭代器,再用hasNext()和next()循环取元素;遍历时删除元素必须使用it.remove(),不可调用set.remove(),否则抛ConcurrentModificationException。

直接用 Iterator 遍历 Set 集合,核心是调用 set.iterator() 获取迭代器,再用 hasNext() 和 next() 循环取元素。
获取 Iterator 对象
Set 接口继承自 Collection,所有实现类(如 HashSet、TreeSet、LinkedHashSet)都支持 iterator() 方法:
- Set
set = new HashSet(); - Iterator
it = set.iterator(); // 返回一个迭代器实例
标准 while 循环遍历
这是最通用、最安全的写法,适合需要控制流程或中途操作迭代器的场景:
- while (it.hasNext()) {
- String item = it.next(); // 每次调用 next() 返回当前元素并移动指针
- System.out.println(item);
- }
注意:不能在遍历中直接调用 set.remove(),否则会抛 ConcurrentModificationException;如需删除,必须用 it.remove()。
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
增强 for 循环(底层仍是 Iterator)
语法更简洁,本质由编译器自动转为 Iterator 遍历:
- for (String item : set) {
- System.out.println(item);
- }
这种写法无法在循环中安全删除元素(没有暴露 Iterator 引用),如需边遍历边删,仍得回到显式 Iterator 方式。
遍历时删除元素的正确方式
如果要在遍历中移除满足条件的元素,必须使用 Iterator 的 remove() 方法:
- while (it.hasNext()) {
- String s = it.next();
- if (s.startsWith("a")) {
- it.remove(); // 安全删除,不会触发异常
- }
- }
调用 it.remove() 前必须已调用过一次 next(),否则抛 IllegalStateException。

















