Java中Iterator对象通过集合的iterator()方法获取,所有实现Collection接口的集合(如ArrayList、HashSet、LinkedList)均支持;标准遍历用while配合hasNext()和next(),增强for循环底层等价但不支持边遍历边删;安全删除需调用Iterator的remove()方法且须紧随next()之后。

Java 中 Iterator 迭代器通过集合的 iterator() 方法获取,再用 hasNext() 和 next() 配合循环遍历数据,安全且通用。
怎么获取 Iterator 对象
所有实现了 Collection 接口的集合(如 ArrayList、HashSet、LinkedList)都提供 iterator() 方法:
List<String> list = Arrays.asList("a", "b", "c");-
Iterator<String> it = list.iterator();—— 获取迭代器实例
标准遍历写法(推荐 while 循环)
用 hasNext() 判断是否还有元素,用 next() 取出当前元素:
while (it.hasNext()) {String item = it.next(); // 每次调用 next() 自动移到下一位System.out.println(item);}
注意:next() 必须在 hasNext() 返回 true 后调用,否则抛 NoSuchElementException。
立即学习“Java免费学习笔记(深入)”;
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
增强 for 循环底层就是 Iterator
下面代码和上面 while 写法等价,编译后会自动转为 Iterator 调用:
for (String s : list) {System.out.println(s);}
但增强 for 无法在遍历时删除元素;如需边遍历边删,必须用 Iterator 的 remove() 方法。
遍历时安全删除元素
直接调用集合的 remove() 会引发 ConcurrentModificationException,正确做法是:
while (it.hasNext()) {String s = it.next();if ("b".equals(s)) it.remove(); // 删除当前元素,安全}
注意:remove() 只能紧跟在一次 next() 之后调用,且只能删一次。

















