hasNext()用于判断迭代器是否还有未遍历元素,返回true或false,仅探测不移动游标,须与next()配合使用;标准遍历需在while条件中调用hasNext(),循环体内调用next()。

用 hasNext() 方法判断。
hasNext() 的作用和特点
这是 Iterator 接口定义的核心方法,返回 boolean 值:
— 有未遍历的元素,返回 true;
— 已到末尾或集合为空,返回 false。
它只做“探测”,不移动内部游标,也不消费元素。
必须配合 next() 使用
hasNext() 本身不取数据,真正获取并推进指针靠 next():
— 每次调用 next(),游标向后移一位,并返回当前位置的元素;
— 如果在 hasNext() 返回 false 后还调用 next(),会立即抛出 NoSuchElementException。
标准写法只有一种
安全、规范的遍历结构是:
- 始终把
hasNext()放在while循环条件里 -
next()只出现在循环体内,且每次只调一次 - 避免先 if 判断再循环,或在循环外多调一次 next()
底层其实很直接
以 ArrayList 迭代器为例,hasNext() 内部通常就是一句判断:return cursor < size;
其中 cursor 是当前游标位置,size 是集合实际元素个数。它不涉及类型检查、不触发异常、也不修改集合状态。


















