在 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( … )
java-11提供新方法Predicate#not
所以你可以否定方法引用:
Stream<String> s = ...;
long nonEmptyStrings = s.filter(Predicate.not(String::isEmpty)).count();
关于java - 如何否定方法引用谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21488056/