How to Iterate List in Java

2025年4月26日 | 阅读 4 分钟

在 Java 中,List 是 **Collection 框架** 的一个接口。它允许我们维护一个对象的有序集合。List 接口的实现类有 **ArrayList、LinkedList、Stack** 和 **Vector**。ArrayList 和 LinkedList 在 Java 中被广泛使用。在本节中,我们将学习 **如何在 Java 中迭代 List**。在本节中,我们将使用 **ArrayList**。

Java for 循环

  1. 基本 for 循环
  2. 增强 for 循环

Java 迭代器

  1. Iterator
  2. ListIterator

Java forEach 方法

  1. Iterable.forEach()
  2. Stream.forEach()

Java for 循环

基本 for 循环

Java for 循环 是最常见的迭代流程控制循环。for 循环包含一个充当索引号的变量。它会执行直到整个 List 都被迭代完。

语法

IterateListExample1.java

输出

Boston
San Diego
Las Vegas
Houston
Miami
Austin

增强 for 循环

它类似于基本 for 循环。它简洁、易用且可读性强。它被广泛用于遍历 List。与基本 for 循环相比,它更容易使用。

语法

IterateListExample2.java

输出

Boston
San Diego
Las Vegas
Houston
Miami
Austin

Java 迭代器

Iterator

Java 提供了一个 Iterator 接口 来 **迭代** 集合,例如 List、Map 等。它包含 next() 和 hasNaxt() 两个关键方法,允许我们对 List 进行迭代。

next(): next() 方法以正向顺序执行迭代。它返回 List 中的下一个元素。如果迭代不包含 List 中的下一个元素,则抛出 **NoSuchElementException**。此方法可以重复调用以遍历列表,或者与 previous() 调用混合使用以向前和向后移动。

语法

hasNext(): hasNext() 方法帮助我们查找 List 的最后一个元素。它检查 List 是否还有下一个元素。如果在正向遍历过程中 hasNext() 方法获取到元素,则返回 true,否则返回 false 并终止执行。

语法

IterateListExample3.java

输出

Boston
San Diego
Las Vegas
Houston
Miami
Austin

ListIterator

ListIterator 也是一个属于 java.util 包的接口。它扩展了 **Iterator<E>** 接口。它允许我们沿正向或反向顺序迭代 List。沿 List 的正向迭代提供了与 Iterator 相同的机制。我们使用 Iterator 接口的 next() 和 hasNext() 方法来迭代 List。

IterateListExample4.java

输出

Boston
San Diego
Las Vegas
Houston
Miami
Austin

Java forEach 方法

Iterable.forEach()

Iterable 接口提供了 forEach() 方法来迭代 List。它自 Java 8 起可用。它对每个元素执行指定的操作,直到所有元素都被处理完毕,或者操作抛出异常。它也接受 Lambda 表达式作为参数。

语法

默认实现的行为类似于

它接受 **action** 作为参数,该参数是 **非干扰性** 的(意味着在流管道执行期间数据源根本不会被修改)操作,用于处理元素。如果指定的 action 为 null,则抛出 **NullPointerException**。

Consumer<T> 是一个函数式接口,可以用作 lambda 表达式或方法引用的赋值目标。T 是操作的输入类型。它表示一个接受单个输入参数且不返回结果的操作。

IterateListExample5.java

输出

Boston
San Diego
Las Vegas
Houston
Miami
Austin

Stream.forEach()

Java Stream 接口允许我们将 List 值转换为流。借助 Stream 接口,我们可以访问 forEach()、map() 和 filter() 等操作。

语法

它接受 **action** 作为参数,该参数是 **非干扰性** 的(意味着在流管道执行期间数据源根本不会被修改)操作,用于处理元素。

Consumer<T> 是一个函数式接口,可以用作 lambda 表达式或方法引用的赋值目标。T 是操作的输入类型。它表示一个接受单个输入参数且不返回结果的操作。

IterateListExample5.java

输出

Boston
San Diego
Las Vegas
Houston
Miami
Austin

下一个主题Java 多维数组