推荐使用增强for循环遍历arraylist,代码简洁且无需索引;若需索引则用传统for循环;迭代器适用于遍历时删除元素。

ArrayList 遍历所有元素有多种常用方式,选哪种取决于你的具体需求:是否需要索引、是否要修改集合、是否关心性能或代码可读性。
用 for 循环(基于索引)
最直观的方式,适合需要下标位置的场景,比如按位置处理、比较相邻元素等。
- 利用 size() 获取长度,配合 get(i) 取值
- 注意索引从 0 开始,上限是 list.size() - 1
for (int i = 0; i <h3>用增强 for 循环(for-each)</h3><p>语法简洁,适合只读遍历,底层调用迭代器,但不暴露索引。</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill9868" title="Java注释规范Skills"><img src="https://img.php.cn/upload/skill/001/246/273/6adaf20dbae7c507.jpg" alt="Java注释规范Skills" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill9868" title="Java注释规范Skills" class="overflowclass">Java注释规范Skills</a> <p class="overflowclass">当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。</p> </div> <a rel="nofollow" href="/xiazai/skill9868" title="Java注释规范Skills" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>
- 不能在遍历时直接删除元素(会抛 ConcurrentModificationException)
- 无法获取当前元素的索引,如需索引得额外定义计数器
for (String item : list) {
System.out.println(item);
}
用 Iterator 迭代器
最安全的遍历+删除组合方式,适用于边遍历边有条件地移除元素。
- 调用 iterator() 获取迭代器
- 用 hasNext() 和 next() 遍历
- 删除必须用 iterator.remove(),不能用 list.remove()
Iterator<string> it = list.iterator();
while (it.hasNext()) {
String item = it.next();
if ("target".equals(item)) {
it.remove(); // 安全删除
}
}</string>
用 forEach + Lambda(Java 8+)
函数式风格,代码极简,适合对每个元素执行简单操作。
- 本质是内部调用 Iterator,不能中断或获取索引
- 不能在 lambda 中修改原集合结构(如 add/remove),否则报错
list.forEach(System.out::println);
// 或自定义逻辑
list.forEach(item -> {
if (item.length() > 5) {
System.out.println(item);
}
});










