You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArrayList迭代器循环异常:仅首个元素重复输出求助

问题分析与解决

你的代码输出重复首个元素的原因是迭代器使用逻辑错误:

  • 初始化阶段var item = iter.next()获取了第一个元素,但后续循环中,每次执行iter.next()仅移动迭代器指针,却没有将新指向的元素赋值给item。
  • 循环执行次数等于集合大小:初始取1个元素,之后iter.hasNext()会判断size-1次,加上初始的输出,总共输出size次,而item始终是第一个元素,因此会重复输出。

修正后的代码

方式1:标准迭代器while写法(最直观)

var list = new ArrayList<String>();
list.add("Omni");
list.add("Okan");
var iter = list.iterator();
while (iter.hasNext()) {
    var item = iter.next();
    System.out.println(item);
}

方式2:修复原for循环结构

如果坚持使用for循环,需把iter.next()的赋值放到循环更新部分:

var list = new ArrayList<String>();
list.add("Omni");
list.add("Okan");
var iter = list.iterator();
for (var item = iter.next(); iter.hasNext(); item = iter.next()) {
    System.out.println(item);
}

方式3:增强for循环(推荐,最简洁)

Java增强for循环底层基于迭代器实现,语法简洁且不易出错:

var list = new ArrayList<String>();
list.add("Omni");
list.add("Okan");
for (var item : list) {
    System.out.println(item);
}

以上三种写法都会输出预期结果:

Omni
Okan

内容的提问来源于stack exchange,提问作者Sped

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:22:07