Java 9 Stream API 改进

2024 年 10 月 17 日 | 阅读 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)如果非 null,则返回一个包含单个元素的顺序流,否则返回一个空流。
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,则包含单个元素。否则,它返回一个空流。

它有助于处理 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 流接口中添加了一个新的重载方法**iterate**。此方法允许我们迭代流元素直到指定的条件。

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

Java Stream Iterate 方法示例

输出

1
3
9

下一主题下划线关键字