集合遍历
集合遍历
集合遍历是指访问集合中的每个元素,并对它们进行迭代处理的过程。Java集合框架提供了几种遍历集合的方法。以下是一些常见的遍历技术:
使用 for
循环
对于数组或 List
,可以使用传统的 for
循环进行遍历:
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
使用增强的 for
循环(For-Each Loop)
Java 5 引入了增强的 for
循环,它使得遍历集合更加简洁:
for (String fruit : list) {
System.out.println(fruit);
}
使用 Iterator
Iterator
是一个允许调用者访问一个集合的元素的方法,而不必关心集合的底层表示。每个 Collection
接口的实现都提供了一个 iterator()
方法:
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String fruit = iterator.next();
System.out.println(fruit);
}
使用 Stream
Java 8 引入了 Stream
API,它支持函数式编程,可以进行更复杂的集合操作,包括遍历:
list.stream().forEach(System.out::println);
使用 Spliterator
Java 8 还引入了 Spliterator
,它用于遍历 Collection
,支持并行操作:
Spliterator<String> spliterator = list.spliterator();
while (spliterator.tryAdvance(fruit -> System.out.println(fruit))) {
// 元素处理
}
使用 forEach
方法
Collection
接口的 forEach
方法允许你传入一个 Consumer
函数式接口,对每个元素执行操作:
list.forEach(fruit -> System.out.println(fruit));
使用 Stream
的 peek
方法
如果你需要在流处理过程中进行遍历,可以使用 peek
方法:
list.stream()
.peek(System.out::println) // 遍历并打印每个元素
.filter(fruit -> fruit.startsWith("B")) // 过滤操作
.collect(Collectors.toList()); // 收集结果
注意事项
- 遍历修改:在遍历时修改集合(例如添加或删除元素)可能会导致
ConcurrentModificationException
。如果需要在遍历过程中修改集合,考虑使用Iterator
的remove
方法或使用Collectors
收集结果到新集合。 - 性能:对于大型集合,考虑遍历的性能。例如,使用
Stream
API 可能比传统的for
循环更高效,特别是当涉及到并行处理时。