Iterator的next()方法返回当前指向的下一个元素并移动指针,但必须先用hasNext()检查,否则抛NoSuchElementException;标准用法是while(hasNext())循环内调用next()。

在 Java 中,Iterator 的 next() 方法用于返回迭代器当前指向的下一个元素,并将内部指针向后移动一位。但必须注意:**调用 next() 前必须先用 hasNext() 检查是否有下一个元素,否则会抛出 NoSuchElementException。**
基本使用步骤
标准安全用法是配合 hasNext() 循环调用:
- 创建集合的迭代器(如
list.iterator()) - 用
while (iterator.hasNext())判断是否还有元素 - 在循环体内调用
iterator.next()获取并处理该元素
示例:
List<string> list = Arrays.asList("a", "b", "c");
Iterator<string> it = list.iterator();
while (it.hasNext()) {
String item = it.next(); // 安全:hasNext 已确保有元素
System.out.println(item);
}</string></string>
next() 的行为细节
next() 不仅返回元素,还会“消耗”当前元素 —— 即每次调用都推进迭代器状态。连续两次调用 next() 会得到两个不同元素(如果存在):
- 第一次调用:返回第一个元素,指针移到第二个位置
- 第二次调用:返回第二个元素,指针移到第三个位置
- 若在无元素时调用,立即抛出
NoSuchElementException
常见错误写法
以下写法危险,容易崩溃:
-
it.next()单独写在while外,未检查hasNext() - 循环中多次调用
next()却只用一次hasNext()判断(如if (it.hasNext()) { it.next(); it.next(); }) - 把
next()放在 for 循环条件里(如for ( ; it.hasNext(); it.next())),逻辑错乱
增强 for 循环的本质
Java 的 for (String s : list) 底层就是用 Iterator 实现的,等价于手动写 hasNext() + next()。它自动处理了安全边界,适合只读遍历;若需边遍历边删除,则必须显式使用 Iterator.remove()。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











