![](/img/trans.png)
[英]How to use stream on method that return boolean value with condition
[英]How to use stream on method that return boolean value with multiple condition
我正在使用这种方法:
private boolean getUsageDisabled(controlUnitVersion cUv) {
Partnumber partn=cUv.getcontrolUnit().getpartnumber();
for (controlUnit cu: partn.getcontrolUnit()) {
for (ControlUnitVersion cUv2: cu.getcontrolUnitVersion()) {
for (release r: cUv2.getRelease()) {
if (r.getWorkflowState().getKey().equals("locked") ||
r.getWorkflowState().getKey().equals("released")) {
return true;
}
}
}
return false;
}
}
我希望能够使用 Stream 更改它,我尝试了以下方法,但我遗漏了一些东西:
partn.getcontrolUnit()
.stream()
.forEach(cu -> cu.getControlUnitVersion()
.stream()
.filter(cUv2 -> cUv2.getrelease()
.stream()
.forEach(release -> {
if (release.getWorkflowState().getKey().equals("locked") ||
release.getWorkflowState().getKey().equals("released")) {
return true;
}
})
)
);
但我收到一个错误。
您有一个列表列表,并且您想在嵌套列表中使用流执行一些计算。 flatMap() 方法可以解决您的问题。
并且您想返回一个布尔值,如果流中有任何元素匹配给定条件,则 anyMatch() 可能是一个不错的选择。
partn.getcontrolUnit().stream()
.flatMap(cu -> cu.getcontrolUnitVersion().stream())
.anyMatch(r -> r.getWorkflowState().getKey().equals("locked") || r.getWorkflowState().getKey().equals("released"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.