Java 9 Stream API 改进

2025 年 2 月 13 日 | 阅读 3 分钟

在 Java 9 中,Stream API 得到了改进,并为 Stream 接口添加了新方法。这些方法如下表所示。

修饰符和类型方法描述
default Stream<T>takeWhile(Predicate<? super T> predicate)如果此流是有序的,则返回一个流,该流包含此流中最长的匹配给定谓词的元素前缀。否则,如果此流是无序的,则返回一个流,该流包含此流中匹配给定谓词的元素子集。
default Stream<T>dropWhile(Predicate<? super T> predicate)如果此流是有序的,则返回一个流,该流包含此流中在删除与给定谓词匹配的最长元素前缀后的剩余元素。否则,如果此流是无序的,则返回一个流,该流包含此流中在删除与给定谓词匹配的元素子集后的剩余元素。
static <T> Stream<T>ofNullable(T t)如果 t 非空,则返回一个只包含一个元素的顺序流;否则,返回一个空流。
static <T> Stream<T>iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)基于初始元素,通过迭代应用给定的 next 函数,并以 hasNext 谓词作为条件,生成一个顺序流。一旦 hasNext 谓词返回 false,流就会终止。

Java Stream takeWhile() 方法

Stream takeWhile 方法会处理匹配其谓词的每个元素。当遇到不匹配的元素时停止。它返回一个包含所有匹配元素的子集,其余流被丢弃。

Java Stream takeWhile() 方法示例 1

在此示例中,我们使用 takewhile 方法处理整数列表并提取偶数值。

此示例返回一个空列表,因为它在第一个列表元素处失败,并且 takewhile 在此停止。

输出

[]

Java Stream takeWhile() 方法示例 2

示例中,我们获取前两个元素,因为它们是偶数,并在第三个元素处停止。

输出

[2,2]

Java Stream dropWhile() 方法

Stream dropWhile 方法根据流元素的顺序返回结果。

有序流:它返回一个流,该流包含删除与给定谓词匹配的元素后的元素。

无序流:它返回一个流,该流包含此流中删除与给定谓词匹配的元素子集后的剩余元素。

Java Stream dropWhile() 方法示例

输出

[3, 4, 5, 6, 7, 8, 9, 10]

Java 9 Stream ofNullable() 方法

Stream ofNullable() 方法如果非空,则返回一个包含单个元素的顺序流。否则,它返回一个空流。

它有助于处理 null 流和 NullPointerException。

Java 9 Stream ofNullable() 方法示例 1

输出

[3, 4, 5, 6, 7, 8, 9, 10]

Java 9 Stream ofNullable 方法示例 2

此程序将不产生任何输出。


Java Stream Iterate 方法

Java 9 stream 接口添加了一个新的重载方法iterate。此方法允许我们迭代流元素直到满足指定条件。

它接受三个参数:seed、hasNext 和 next。

Java Stream Iterate 方法示例

输出

1
3
9

下一主题下划线关键字