短路逻辑运算符超过Iterable

时间:2016-09-07 11:23:53

标签: java logical-operators short-circuiting

考虑以下代码,循环可以在达到false值时立即完成。有没有比在每次迭代后检查false更好的方法?

boolean result = true;
List<Boolean> bList = new ArrayList<>();
for (boolean b : bList) {
    result = result && b;
    if (!result) {
        break;
    }
}

3 个答案:

答案 0 :(得分:4)

怎么样?
if (bList.contains(false)) {
  ...

答案 1 :(得分:1)

考虑将循环提取到其方法:

boolean allTrue(List<Boolean> bools) {
  for (boolean b : bools)
    if (!b)
      return false;
  }
  return true;
}

答案 2 :(得分:0)

使用Stream.allMatch这是一种短路操作。

List<Boolean> bList = new ArrayList<>();
boolean result = bList.stream().allMatch(b -> b);