java在任何标准库中都有对布尔集合实现逻辑操作的助手类吗?
我炮制了这个小助手类,想知道是否有地方可以从中窃取它,而不是重新实现轮子:
public class Booleans3 {
private Booleans3(){}
public static boolean and(Iterable<Boolean> booleans) {
boolean result = true;
for (Boolean boolRef : booleans) {
boolean bool = boolRef;
result &= bool;
}
return result;
}
public static boolean or(Iterable<Boolean> booleans) {
boolean result = false;
for (Boolean boolRef : booleans) {
boolean bool = boolRef;
result |= bool;
}
return result;
}
}
我看了看com.google.common.primitives.Booleans,它似乎没有包含我需要的东西
# 1 楼答案
虽然@eng fouad response足够好,但我仍然建议使用Iterables.all()和Iterables.any()与equalTo谓词的另一个方法:
将打印
正如我所看到的:
# 2 楼答案
对{}答案的改进:
如果
boolean
集合是null
或empty
,则以下代码返回false
,否则对元素执行逻辑操作:# 3 楼答案
我不相信Java标准库中有任何部分提供了这种功能
在某些语言中,这些函数被称为
anyOf
(用于or
)或allOf
(用于and
)。在搜索实现这些函数的Java库时,您可能会有一些运气请注意,这里的代码可以进行一些优化。注意,如果你正在计算许多布尔值的和,一旦你找到一个
false
值,你就可以停下来说答案是false
。类似地,如果您正在计算布尔值的OR,您可以在找到true
值时立即停止,因为答案将是true
。这本质上是short-circuit evaluation到对象列表的泛化,是and
和or
在Scheme等语言中的一些版本的行为。由此得出以下结论:希望这有帮助
# 4 楼答案
这个怎么样: