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

ArrayList 遍历所有元素有多种常用方式,选哪种取决于你的具体需求:是否需要索引、是否要修改集合、是否关心性能或代码可读性。
用 for 循环(基于索引)
最直观的方式,适合需要下标位置的场景,比如按位置处理、比较相邻元素等。
- 利用 size() 获取长度,配合 get(i) 取值
- 注意索引从 0 开始,上限是 list.size() - 1
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}用增强 for 循环(for-each)
语法简洁,适合只读遍历,底层调用迭代器,但不暴露索引。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 不能在遍历时直接删除元素(会抛 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(); // 安全删除
}
}用 forEach + Lambda(Java 8+)
函数式风格,代码极简,适合对每个元素执行简单操作。
- 本质是内部调用 Iterator,不能中断或获取索引
- 不能在 lambda 中修改原集合结构(如 add/remove),否则报错
list.forEach(System.out::println);
// 或自定义逻辑
list.forEach(item -> {
if (item.length() > 5) {
System.out.println(item);
}
});

















