当前位置: 首页 > 知识库问答 >
问题:

如何否定方法引用谓词

刘选
2023-03-14

在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); }

共有1个答案

仲孙鸿飞
2023-03-14

java-11提供了一个新的方法谓词#not

因此您可以否定方法引用:

Stream<String> s = ...;
long nonEmptyStrings = s.filter(Predicate.not(String::isEmpty)).count();
 类似资料:
  • 问题内容: 在Java8中,可以使用方法引用来过滤流,例如: 是否有方法创建一个方法引用,该方法引用是对现有方法引用的否定,例如: 我可以创建如下的方法,但我想知道JDK是否提供了类似的功能。 问题答案: Predicate.not( … ) java-11提供了一个新的方法谓词 因此可以否定方法引用:

  • 我正在尝试forEach中的方法引用 上面的工作很好,但我想让它更短的使用方法参考,但它给编译的问题,有什么办法使它发生?

  • 我试图创建一个从最终用户抽象谓词使用的类。 我的应用程序使用了番石榴重试扩展,效果很好。 我可以很容易地用谓词调用它,它会轮询,直到谓词返回false。 现在,也许我误解了谓词,但我正在尝试创建一个类来抽象它们。 我想这样称呼它 所以我写了如下PollCondition类。 但是MyPoller。poll()调用无法编译-未声明结果。 知道吗?

  • 问题内容: 如何使用标签链接到方法? 我想要改变: 至: 但我不知道如何正确设置标签格式。 问题答案: 您可以 在标准Doclet 的 文档注释规范中 找到有关JavaDoc的许多信息,包括有关JavaDoc 的信息。 {@link package.class#member标签} 标签(您要查找的)。文档中的相应示例如下 例如,以下注释引用了getComponentAt(int,int)方法: 如

  • 所以我想做的是console.log我的三节点数组中的一个特定元素。 我谷歌了一下,发现了这个帖子:在forEach循环中获取一个特定的元素,确实问了同样的问题。然而,当我控制台记录元素时,我期望得到索引为0的节点。然而,我得到了一个空元素。

  • 问题内容: 我经常发现自己需要过滤a 或使用谓词来检查给定字段是否具有给定值。 比如说我有这个POJO: 我想根据的值过滤对象的: 是否会有一种方便的方法来为该方法生成谓词?我注意到有,但不符合需要。 我可以很容易地这样写: 并将其用作: 但我希望尽可能重用JDK中的现有方法。 问题答案: 没有内置的工厂方法,您可以通过查看JFC中的所有用法并查找“ …中返回谓词的方法” 来轻松检查。除了自身内部