一种看似愚蠢的使用 Stream API 的方式导致需要 Predicate<Boolean>

A seemingly silly way of using the Stream API that leads to the need for Predicate<Boolean>

布尔值的谓词对我来说有点傻(好吧,至少在以下情况下):

static Set<A> aSet = ...;

checkCondition(B b) {
    return aSet.stream()
               .map(b::aMethodReturningBoolean)
               .filter((Boolean check) -> check)
               .limit(1).count() > 0;
}

我正在做的是给定对象 b,检查 aSet 中是否至少有一个成员满足关于 b 的特定条件。

一切正常,但 filter((Boolean check) -> check) 行就像一根小针刺痛了我!有什么办法可以避免吗?我的意思是,如果我的代码中有一行实际上是身份函数,那么我的方法一定有问题。

你只需要

return aSet.stream().anyMatch(b::aMethodReturningBoolean);

更易读。