如果找到一个元素,anyMatch操作将返回true - 如果找到匹配元素,则noneMatch操作将返回false。
如果找不到匹配元素,则anyMatch操作将返回false - 如果找不到匹配元素,则noneMatch操作将返回true。
因此,我们不是只进行这两项操作,或者是否缺少某些操作,而不是同时进行这两项操作?实质上,anyMatch返回false是一种评估noneMatch谓词真实性的方法。
答案 0 :(得分:5)
是的,我们完全可以。但是,至少有一个中等合理的理由:!
将在流表达式的最开始处进行,该表达式可以链接多行,例如你必须写
!collection.stream()
.map(someMapFunction)
.filter(someFilterFunction)
.distinct()
.sorted(myComparator)
.map(someOtherMapFunction)
.filter(someOtherFilterFunction)
.anyMatch(somePredicate)
...当你在阅读代码时到达anyMatch
时,开头的否定就更难记住了。
(对于它的价值,JDK通常似乎比我可以命名的其他语言少得多。)
答案 1 :(得分:5)
您拥有a != b
的原因相同,而不仅仅支持! (a == b)
: