2016-09-07 195 views
0

请考虑以下代码,该循环一旦达到false值就可以完成。有没有比每次迭代后检查false更好的方法?Iterable上的短路逻辑运算符

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

回答

0

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

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

考虑提取循环到它的方法:

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

什么

if (bList.contains(false)) { 
    ... 
+0

见我的回答一个更通用的解决方案,可以让你在任何类型的Iterable'的'评估谓词。 – Roland

+0

该方法可能更为通用,但其功能并不明显。:) – Reimeus