我正在尝试为结果返回一个布尔值。
public boolean status(List<String> myArray) {
boolean statusOk = false;
myArray.stream().forEach(item -> {
helpFunction(item).map ( x -> {
statusOk = x.status(); // x.status() returns a boolean
if (x.status()) {
return true;
}
return false;
});
});
}
lambda表达式中使用的抱怨变量应该是final或者有效的final。 如果我指定statusOk,那么我无法在循环内分配。如何使用stream()和map()返回布尔变量?
答案 0 :(得分:8)
您正在使用错误的流...
你不需要在流上做foreach,而是调用anyMatch而不是
public boolean status(List<String> myArray) {
return myArray.stream().anyMatch(item -> here the logic related to x.status());
}
答案 1 :(得分:3)
看起来helpFunction(item)
会返回某个具有boolean status()
方法的类的实例,如果true
为helpFunction(item).status()
,您希望自己的方法返回true
} {你的Stream
的任何元素。
您可以使用anyMatch
:
public boolean status(List<String> myArray) {
return myArray.stream()
.anyMatch(item -> helpFunction(item).status());
}