如何将逻辑运算符应用于Java中的所有元素

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)

Mif*_*eet 7

在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)


Daw*_*icz 6

正如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为空的情况.

  • 在您的原始问题中,您发布了运算符`AND` - `&&`not`OR` - `||`.对于"OR",将初始值更改为"false",将运算符更改为"||".在java 8示例中,只需更改运算符即可.orElse语句中的值仅适用于list为Empty的情况. (2认同)