2016-09-07 196 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