java - takeWhile 与过滤器有何不同?

标签 java java-stream java-9

takeWhile() 与 Java 9 中的 filter() 有何不同。它有什么额外的实用程序?

Stream.of(1,2,3,4,5,6,7,8,9,10).filter(i -> i < 4 )
        .forEach(System.out::println);

这可能是下面会做的

Stream.of(1,2,3,4,5,6,7,8,9,10).takeWhile(i -> i < 4 )
        .forEach(System.out::println);

那么这个新功能的需求是什么?

最佳答案

filter 将从流中删除所有不满足条件的项目。

takeWhile 将在第一次出现不满足条件的项目时中止流。

例如

Stream.of(1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1)
    .filter(i -> i < 4 )
    .forEach(System.out::print);

将打印

123321

但是

Stream.of(1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1)
    .takeWhile(i -> i < 4 )
    .forEach(System.out::print);

将打印

123

关于java - takeWhile 与过滤器有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46850689/

相关文章:

java - 为什么不打印此代码?有什么错误?

java - 如果在 JVM 仍在使用 Jar 时对其进行更新,会发生什么情况?

java - 没有字段的 jackson 多态反序列化

java - Deltaspike 与 Java 9 兼容吗?

java - 如何清除 json 字符串中的多个转义字符?

java - 计算列表中字符串的出现次数,然后对结果进行排序 - Java 8

java - 使用 isPresent 方法在 Java8 中列出过滤器

java - 使用 Java 流打印从 A 到 Z 的字母

java - 如何在 Java 9 上运行 jol?

java - 在 Java 9+ 中使用 JRE 运行时,我可以提供运行时编译器访问吗?