1. 简介

在程序开发中,遍历一个 List 集合是最常见的操作之一。

本篇文章将带你回顾 Java 中遍历 List 的各种方式。我们主要关注正向遍历,当然反向遍历(可以参考 Java List 反向遍历)也同样简单易行。

2. for 循环

我们先从最常见的 for 循环开始。

先定义一个示例用的国家列表:

List<String> countries = Arrays.asList("Germany", "Panama", "Australia");

2.1. 基础 for 循环

基础的 for 循环是控制流程中最常见的结构之一。它由三个部分组成,用分号分隔:初始化语句、终止条件、更新语句。

下面是一个典型的使用索引遍历的方式:

for (int i = 0; i < countries.size(); i++) {
    System.out.println(countries.get(i));
}
  • 初始化语句:声明一个整型变量作为索引。
  • 终止条件:判断是否越界。
  • 更新语句:每次循环后索引自增。

✅ 优点:灵活,支持随机访问
❌ 缺点:代码略显啰嗦,容易出错(比如越界)

2.2. 增强型 for 循环(for-each)

增强型 for 循环(也叫 for-each)语法简洁,适用于只读遍历场景。它隐藏了索引细节,直接访问元素。

for (String country : countries) {
    System.out.println(country); 
}

✅ 优点:代码简洁、可读性高
⚠️ 缺点:无法获取索引,不能修改集合

3. 使用迭代器(Iterator)

3.1. Iterator

Java 中的 Iterator 是一种设计模式,它提供了一种统一的方式来遍历集合,而无需关心底层实现。

Iterator<String> countriesIterator = countries.iterator();

while(countriesIterator.hasNext()) {
    System.out.println(countriesIterator.next()); 
}
  • hasNext():判断是否还有下一个元素 ✅
  • next():返回下一个元素 ✅

这种方式的好处是解耦,无论底层是 ArrayList 还是 LinkedList,都可以用统一接口遍历。

3.2. ListIterator

ListIteratorIterator 的子接口,专门用于 List,支持双向遍历

ListIterator<String> listIterator = countries.listIterator();

while(listIterator.hasNext()) {
    System.out.println(listIterator.next());
}

除了正向遍历外,还可以通过 hasPrevious()previous() 方法反向遍历。

✅ 优点:支持双向遍历、可选位置插入/删除
⚠️ 缺点:仅适用于 List 接口的实现类

4. forEach() 方法

4.1. Iterable.forEach()

从 Java 8 开始,Iterable 接口新增了 forEach() 方法,可以直接传入 Lambda 表达式或方法引用。

countries.forEach(System.out::println);

这是最简单粗暴的方式之一,尤其适合配合函数式编程。

✅ 优点:代码简洁,支持函数式风格
⚠️ 缺点:无法中途 break 或 continue

4.2. Stream.forEach()

通过 Stream API,我们可以链式调用多个操作,如 filter()map() 等,最后使用 forEach() 输出结果。

countries.stream().forEach((c) -> System.out.println(c));

这种方式更适用于需要对数据进行处理后再输出的场景。

✅ 优点:链式操作,功能强大
⚠️ 缺点:性能略逊于直接遍历(尤其是小数据量)

5. 总结

本文介绍了 Java 中遍历 List 的常见方式,包括:

  • 基础 for 循环
  • 增强型 for 循环(for-each)
  • IteratorListIterator
  • Java 8 引入的 forEach() 方法
  • 以及结合 StreamforEach() 使用方式

每种方式都有其适用场景,选择时应根据是否需要索引、是否要中途退出、是否涉及函数式处理等因素综合考虑。


原始标题:Ways to Iterate Over a List in Java | Baeldung