P. *_*rov 3 java arraylist operators
我需要将&&
(logical和)运算符应用于列表中的所有元素.问题是:在我目前的解决方案中,我需要初始化rowResult
变量,并且我认为结果可能因为变量具有初始值而变得无效.
ArrayList<Boolean> results = new ArrayList<>();
for (i = 1; i < results.size(); i++) {
rowResult = rowResult && results.get(i);
}
Run Code Online (Sandbox Code Playgroud)
在Java 8中,您可以使用流:
boolean rowResult = results.stream().allMatch(b -> b);
Run Code Online (Sandbox Code Playgroud)
在Java 8之前,有Guava:
boolean rowResult = Iterables.all(results, new Predicate<Boolean>() {
@Override
public boolean apply(Boolean input) {
return input;
}
});
Run Code Online (Sandbox Code Playgroud)
正如Jon Skeet或CherryDT所述,您可以使用true初始化rowResult.然后你的代码看起来像:
boolean rowResult = true;
for (Boolean el: list) {
rowResult = el && rowResult;
}
Run Code Online (Sandbox Code Playgroud)
如果想要使用运算符OR
- ||
初始值应设置为false
和运算符||
.
在Java 8中,您可以reduce
为流应用use 方法:
List<Boolean> list = new ArrayList<>();
boolean rowResult = list.stream().reduce((a,b)-> a && b).orElse(true);
Run Code Online (Sandbox Code Playgroud)
后者具有以下优点:您可以应用任何逻辑运算符而不是&&
.
在java 8示例中,可以将运算符更改为例如||
以应用OR
.orElse
语句中的值仅适用于list为空的情况.
归档时间: |
|
查看次数: |
3643 次 |
最近记录: |