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/41429869/

相关文章:

java - 编辑单元格值时以十进制格式显示数据

java - 由于 "maven-metadata-bintray-central.xml"文件中的错误,Maven 构建失败

c# - 如何在给定条件的情况下从递归层次结构返回节点路径?

java - 使用 Java 比较器按另一个列表对对象列表进行排序

java - JPA 中的人与子关系,其中 Child 也是人

java - 未找到@Autowired bean

java - 使用 Spring JPA 规范和 Hibernate 加入不同的元素

ios - NSPredicate 不适用于计算字段

java - ConcurrentSkipListMap 如何使删除和添加调用原子化

java - 如何根据 Java 8 Stream 过滤器的输出计算百分比