我有一个对象列表,我从中提取布尔值并希望对它们应用AND操作。是否有更好(或更简洁)的方法来做到这一点?
final boolean[] result = {true};
someList.stream().map(o -> o.getBooleanMember()).forEach(b -> result = result && b);
答案 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));
如果您没有此依赖项,则可以创建自己的包装器。