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

标签 java boolean guava

给定一个 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);

关于java - 如何检查至少一个 boolean 值是否为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69256626/

相关文章:

java - 将字节数组转换为字符串 - - With Performance Android

java - 如何启动 draw9patch 是否绝对有必要重新缩放图片?

java - 仍然无法访问本地主机 :5762 after starting RabbitMQ server

swift - 如何返回 boolean 值?

math - XOR 中的互斥真的适合两个以上的输入吗?

java - 带有 Java 的 Apache Spark : Launching multiple app requests simultaneously

java 单例 boolean 表达式返回消息而不是 true 或 false

java - 接口(interface)/枚举列出标准 mime 类型常量

java - Guava 不可变集合的序列化是否稳定?

java - 谷歌 Guava 嵌套木工