for-each循环简化遍历操作,适用于集合和数组的只读访问。其语法为“for (类型 变量 : 集合或数组)”,可直接获取元素值而无需索引或迭代器。遍历List、Set时直接使用,Map需通过keySet()、values()或entrySet()实现。优点是代码简洁安全,缺点是无法在遍历时删除元素、获取索引或反向遍历。若需修改集合,应使用Iterator配合remove()方法。该循环适合大多数只读场景,提升代码可读性与开发效率。

在Java中,for-each循环(也称为增强for循环)是一种简洁、安全的遍历集合或数组的方式。它简化了传统for循环的语法,避免手动管理索引或迭代器,使代码更易读、不易出错。
for-each循环的基本语法
for-each循环的语法格式如下:
for (元素类型 变量名 : 集合或数组) {// 使用变量名操作当前元素
}
其中,变量名表示当前遍历到的元素,冒号后的部分是被遍历的集合或数组。
遍历List集合示例
以ArrayList为例,展示如何使用for-each循环遍历字符串列表:
立即学习“Java免费学习笔记(深入)”;
List
for (String name : names) {
System.out.println(name);
}
这段代码会依次输出每个名字,无需调用get(index)或使用Iterator。
遍历Set和Map的技巧
Set集合同样支持for-each循环,因为其也实现了Iterable接口:
Set
numbers.add(1); numbers.add(2); numbers.add(3);
for (Integer num : numbers) {
System.out.println(num);
}
对于Map,不能直接遍历键值对,但可以通过keySet()、values()或entrySet()实现:
Map
scores.put("语文", 85);
scores.put("数学", 90);
// 遍历键
for (String subject : scores.keySet()) {
System.out.println(subject);
}
// 遍历值
for (Integer score : scores.values()) {
System.out.println(score);
}
// 遍历键值对
for (Map.Entry
System.out.println(entry.getKey() + ": " + entry.getValue());
}
使用注意事项与限制
for-each循环虽然方便,但也有使用上的限制:
- 无法在遍历时删除元素,否则会抛出ConcurrentModificationException
- 不能获取当前元素的索引位置
- 不支持反向遍历
- 若需修改集合结构,应使用Iterator
如果需要删除元素,应显式使用Iterator:
Iterator
while (it.hasNext()) {
String item = it.next();
if ("待删除项".equals(item)) {
it.remove();
}
}
基本上就这些。for-each循环适合大多数只读遍历场景,让代码更清晰,减少出错可能。掌握它的用法和限制,能让你在处理集合时更加高效。










