java 集合遍历
时间: 2025-03-20 20:10:38 浏览: 37
### Java 集合遍历方法概述
Java 中提供了多种集合遍历的方式,每种方式都具有不同的特性和适用场景。以下是几种常见且高效的集合遍历方法及其示例。
#### 使用增强型 `for` 循环
增强型 `for` 循环是一种简单而直观的方式来遍历集合中的元素。它适用于任何实现了 `Iterable` 接口的集合类型,如 `List` 和 `Set`。
```java
import java.util.ArrayList;
import java.util.List;
public class ForEachExample {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 20));
students.add(new Student("Bob", 22));
for (Student student : students) {
System.out.println(student.getName() + ": " + student.getAge());
}
}
}
```
这种方式的优点在于语法简洁明了[^1],但在需要动态修改集合时存在局限性。
---
#### 使用 `Iterator`
当需要在遍历时安全地移除元素时,推荐使用 `Iterator`。这是唯一一种可以在迭代过程中安全删除元素而不抛出异常的方法。
```java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExample {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 20));
students.add(new Student("Bob", 22));
Iterator<Student> iterator = students.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
if ("Bob".equals(student.getName())) {
iterator.remove(); // 安全移除当前元素
}
}
System.out.println(students);
}
}
```
此方法特别适合于需要边遍历边修改集合的情况[^2]。
---
#### 使用 `Stream API`(Java 8 及以上)
`Stream API` 是 Java 8 引入的强大工具,支持函数式编程风格,并可以轻松实现过滤、映射和聚合操作。
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 20));
students.add(new Student("Bob", 22));
List<Student> filteredStudents = students.stream()
.filter(student -> student.getAge() > 21)
.collect(Collectors.toList());
filteredStudents.forEach(student ->
System.out.println(student.getName() + ": " + student.getAge())
);
}
}
```
这种方法不仅功能强大,还能够利用多核处理器的优势来执行并行流操作。
---
#### 遍历 `Map` 集合
对于 `Map` 类型的集合,可以通过键集、值集或条目集来进行遍历。
```java
import java.util.HashMap;
import java.util.Map;
public class MapTraversalExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Alice", 20);
map.put("Bob", 22);
// 方式一:通过 keySet 遍历
for (String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
// 方式二:通过 entrySet 遍历
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
上述两种方式各有优劣,具体选择取决于实际需求[^3]。
---
### 总结
不同类型的集合有不同的遍历方式,开发者应根据具体的业务逻辑选择最合适的方案。如果仅需读取数据,则可以选择更简单的增强型 `for` 或者 `forEach`;而在需要动态修改集合的情况下,建议优先考虑 `Iterator` 或 `removeIf` 方法。
阅读全文
相关推荐


















