《Java高级编程:从原理到实战 - 进阶知识篇五》
Java遍历集合的五种常用方法
在Java中,遍历集合有多种方式,下面介绍五种最常用的方法,并分析它们的特点和适用场景。
一. 普通for循环(适用于List)
特点:
-
通过索引访问元素
-
只适用于实现了RandomAccess接口的List(如ArrayList)
-
不适用于Set和Map
List<String> list = Arrays.asList("A", "B", "C");
for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));
}
二. 增强for循环(foreach)
特点:
-
语法简洁
-
适用于所有Collection类型
-
底层使用迭代器实现
-
遍历过程中不能修改集合
List<String> list = Arrays.asList("A", "B", "C");
for (String item : list) {System.out.println(item);
}// 同样适用于Set
Set<String> set = new HashSet<>(list);
for (String item : set) {System.out.println(item);
}
三. 迭代器(Iterator)
特点:
-
最原始的遍历方式
-
可以在遍历时安全删除元素
-
适用于所有Collection类型
List<String> list = Arrays.asList("A", "B", "C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {String item = iterator.next();System.out.println(item);// 安全删除当前元素// iterator.remove();
}
四. Java 8 forEach + Lambda
特点:
-
代码简洁
-
支持Lambda表达式
-
不能使用break/continue控制流程
List<String> list = Arrays.asList("A", "B", "C");
list.forEach(item -> System.out.println(item));// 或者使用方法引用
list.forEach(System.out::println);// Map的遍历
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.forEach((k, v) -> System.out.println(k + ":" + v));
五. Stream API(Java 8+)
特点:
-
支持函数式编程
-
可以进行链式操作(过滤、映射等)
-
并行流提高性能
List<String> list = Arrays.asList("A", "B", "C");
list.stream().forEach(System.out::println);// 并行处理
list.parallelStream().forEach(System.out::println);// 带过滤条件的遍历
list.stream().filter(s -> s.startsWith("A")).forEach(System.out::println);