Java 流 - 同时进行 anyMatch 和 noneMatch 操作的目的?

Java stream - purpose of having both anyMatch and noneMatch operations?

如果找到元素,anyMatch 操作将 return 为真 - 如果找到匹配元素,noneMatch 操作将 return 为假。

如果找不到匹配元素,anyMatch 操作将 return 假 - 如果找不到匹配元素,noneMatch 操作将 return 真。

因此,我们不能只做一个操作,而不是同时进行这两个操作,还是我遗漏了什么?本质上,anyMatch returning false 是一种评估 noneMatch 谓词真实性的方法。

是的,我们完全可以。不过,至少有一个适度合理的理由:! 将出现在流表达式的最开头,流表达式可以链接很多行,例如你必须写

 !collection.stream()
    .map(someMapFunction)
    .filter(someFilterFunction)
    .distinct()
    .sorted(myComparator)
    .map(someOtherMapFunction)
    .filter(someOtherFilterFunction)
    .anyMatch(somePredicate)

...当您阅读代码时达到 anyMatch 时,开头的否定更难记住。

(就其价值而言,JDK 的冗余方法通常似乎比我能说出的其他语言要少得多。)

与您 a != b 的原因相同,而不是仅支持 ! (a == b):

  • 易于使用。
  • 目的明确。