如何使用lambdas和列表中的所有布尔值?

时间:2016-05-26 12:48:45

标签: java

我有一个对象列表,我从中提取布尔值并希望对它们应用AND操作。是否有更好(或更简洁)的方法来做到这一点?

final boolean[] result = {true};
someList.stream().map(o -> o.getBooleanMember()).forEach(b -> result = result && b);

2 个答案:

答案 0 :(得分:7)

您可以使用reduce

boolean result = someList.stream().map(o -> o.getBooleanMember()).reduce(true,(a,b)->a&&b);

答案 1 :(得分:1)

如果你的依赖项中有org.apache.commons,你可以使用mutable包中的类:

org.apache.commons.lang3.mutable.MutableBoolean

然后你可以在你的匿名函数(lambdas)中修改这个值,如下所示:

    List<YourClass> someList = new ArrayList<>();
    MutableBoolean result = new MutableBoolean(true);
    someList.stream().map(YourClass::getBooleanMember).forEach(b -> result.setValue(result.getValue() && b));

如果您没有此依赖项,则可以创建自己的包装器。