小编典典

通过谓词限制流

all

是否有 Java 8 流操作限制(可能无限)Stream直到第一个元素无法匹配谓词?

在 Java 9 中,我们可以使用takeWhile下面的示例打印所有小于 10 的数字。

IntStream
    .iterate(1, n -> n + 1)
    .takeWhile(n -> n < 10)
    .forEach(System.out::println);

由于 Java 8 中没有这样的操作,以一般方式实现它的最佳方法是什么?


阅读 141

收藏
2022-06-27

共1个答案

小编典典

操作takeWhiledropWhile已添加到 JDK 9。您的示例代码

IntStream
    .iterate(1, n -> n + 1)
    .takeWhile(n -> n < 10)
    .forEach(System.out::println);

在 JDK 9 下编译和运行时,其行为将完全符合您的预期。

JDK 9 已经发布。可在此处下载:JDK 9 Releases

2022-06-27