java - 如何检查至少一个 boolean 值是否为真?

给定一个 boolean 值数组/列表,例如:

Boolean a = true;
Boolean b = true;
Boolean c = false;
Boolean d = null;

我想检查是否至少有一个 boolean 值为真。所以样本应该计数 true=2 (a + b)。

我试过 Guava 风格:

return Booleans.contains(
        new boolean[] {a, b, c, d}, true);

但导致了 NPE。

您能否指出一个更简单的解决方案?

最佳答案

因为任何 boolean 值都可以为空:

return Stream.of(a, b, c, d).anyMatch(Boolean.TRUE::equals);

return Arrays.asList(a, b, c, d).contains(Boolean.TRUE);

(您不能使用 List.of,因为它不能容忍 null)

如果您想以更命令式的方式编写它,请定义一个方法来检查真实性:

boolean isTrue(Boolean b) {
  return Boolean.TRUE.equals(b);
}

然后像这样调用

return isTrue(a) || isTrue(b) || isTrue(c) || isTrue(d);

https://stackoverflow.com/questions/69256626/

相关文章:

xamarin - 无法再在模拟器或设备上调试

reactjs - 我想在按下 react esc 时关闭模态

c# - 如何将 ViewData 传递给类中的 Action 方法?

c# - 从 C# 中的 JSON 字符串中获取特定值

amazon-web-services - Github 工作流 CI/CD 失败

r - 如何按 r 中数据框中的行对数字数据进行排名?

python - 将函数重新定义为自身的一部分——为什么非法?

c++ - 默认参数与重载?

visual-studio-code - 2FA 与 VS 代码远程 SSH?

java - 减去天数而不影响时间