Java 用谓词限制流

是否存在Java 8流操作来限制(可能是无限的)Stream直到第一个元素与谓词不匹配?

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

IntStream

.iterate(1, n -> n + 1)

.takeWhile(n -> n < 10)

.forEach(System.out::println);

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

回答:

操作takeWhiledropWhile已添加到JDK9。你的示例代码

IntStream

.iterate(1, n -> n + 1)

.takeWhile(n -> n < 10)

.forEach(System.out::println);

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

JDK 9已发布。可在此处下载:http : //jdk.java.net/9/

以上是 Java 用谓词限制流 的全部内容, 来源链接: utcz.com/qa/412502.html

回到顶部