在Java中如何使用for-each循环遍历集合_增强for循环集合遍历技巧说明

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循环遍历字符串列表:

List names = Arrays.asList("张三", "李四", "王五");
for (String name : names) {
    System.out.println(name);
}

这段代码会依次输出每个名字,无需调用get(index)或使用Iterator。

遍历Set和Map的技巧

Set集合同样支持for-each循环,因为其也实现了Iterable接口:

Set numbers = new HashSet();
numbers.add(1); numbers.add(2); numbers.add(3);
for (Integer num : numbers) {
    System.out.println(num);
}

对于Map,不能直接遍历键值对,但可以通过keySet()、values()或entrySet()实现:

Map scores = new HashMap();
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 entry : scores.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

使用注意事项与限制

for-each循环虽然方便,但也有使用上的限制:

  • 无法在遍历时删除元素,否则会抛出ConcurrentModificationException
  • 不能获取当前元素的索引位置
  • 不支持反向遍历
  • 若需修改集合结构,应使用Iterator

如果需要删除元素,应显式使用Iterator:

Iterator it = list.iterator();
while (it.hasNext()) {
    String item = it.next();
    if ("待删除项".equals(item)) {
        it.remove();
    }
}

基本上就这些。for-each循环适合大多数只读遍历场景,让代码更清晰,减少出错可能。掌握它的用法和限制,能让你在处理集合时更加高效。