hasnext()是iterator的核心判断方法,返回boolean值表示是否还有未访问元素,不移动游标,需配合next()使用;标准遍历用while(it.hasnext())循环,增强for底层自动调用;并发修改时会抛concurrentmodificationexception。

用 hasNext() 方法检查是否还有后续元素。
hasNext() 是 Iterator 的核心判断方法
它返回一个 boolean 值:
– 返回 true 表示集合中还有未访问的元素,可以继续调用 next();
– 返回 false 表示已遍历到末尾,再调用 next() 会抛出 NoSuchElementException。
这个方法不移动内部游标,只做“存在性检查”,所以可安全多次调用。
必须配合 next() 使用,不能单独依赖
hasNext() 本身不取数据,只是“探路”。真正获取元素靠 next(),而 next() 必须在 hasNext() 返回 true 后调用。
- ✅ 正确写法:先 if (it.hasNext()) { String s = it.next(); }
- ❌ 危险写法:直接 it.next() 而不检查 —— 集合为空或遍历完时必然报错
典型使用场景是 while 循环
标准遍历模式就是靠 hasNext() 控制循环条件:
Iterator<string> it = list.iterator();
while (it.hasNext()) {
String item = it.next();
System.out.println(item);
}</string>
Java 的增强 for 循环(for (String s : list))底层也自动调用 hasNext() 和 next(),只是封装了细节。
注意并发修改和自定义实现的逻辑
标准集合(如 ArrayList、LinkedList)的迭代器会在 hasNext() 中隐式校验并发修改(fail-fast),一旦检测到集合被非迭代器方式修改,会立即抛 ConcurrentModificationException。
如果你自己实现 Iterator,hasNext() 的逻辑通常类似:
return cursor —— 判断当前游标是否还在合法索引范围内。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











