一种看似愚蠢的使用 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);
更易读。
布尔值的谓词对我来说有点傻(好吧,至少在以下情况下):
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);
更易读。