java - 如何否定方法引用谓词

标签 java predicate java-8 negate

在 Java 8 中,您可以使用方法引用来过滤流,例如:

Stream<String> s = ...;
long emptyStrings = s.filter(String::isEmpty).count();

有没有办法创建一个否定现有方法引用的方法引用,例如:

long nonEmptyStrings = s.filter(not(String::isEmpty)).count();

我可以创建如下所示的 not 方法,但我想知道 JDK 是否提供了类似的功能。

static <T> Predicate<T> not(Predicate<T> p) { return o -> !p.test(o); }

最佳答案

Predicate.not( … )

提供新方法Predicate#not

所以你可以否定方法引用:

Stream<String> s = ...;
long nonEmptyStrings = s.filter(Predicate.not(String::isEmpty)).count();

关于java - 如何否定方法引用谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21488056/

相关文章:

Java 数组和引用

java - JDBC 性能 - 将大型结果集从数据库传递到 Java

ios - 查询的核心数据和查询结果

java - android - Google Play 商店上未显示更新按钮

java - 如何在Java中打开临时目录?

java - 使用 Mockito 在 Java 中模拟谓词

c# - 如何公开带有 Func 参数的 Web 方法?

java - 榛树。序列化失败

java - 策略模式,将函数传递给父方法

java - 内部类的构造函数引用在运行时因 VerifyError 而失败