Java 8 流式传输嵌套列表以查找存在值



我需要找出特征对象是否存在任何值。 现在我正在迭代所有循环以检查值是否存在。 代码也不是空安全的。

boolean flag;
for (ServiceGroup serviceGroup : serviceGroups) {
List<Service> services = serviceGroup.getServices();
for (Service service : services) {
List<Subscription> subscriptions = service.getSubscriptions();
for (Subscription subscription : subscriptions) {
List<ComOrderCFS> prss = subscription.getPrss();
for (ComOrderCFS prs : prss) {
List<ComCFSCharacteristsics> characteristsics = prs.getCharacteristics();
for (ComCFSCharacteristsics characteristsic : characteristsics) {
if ("SerialNumber".equals(characteristsic.getName()) && characteristsic.getValue() != null) {
flag = true;
} else {
flag = false;
}
}
}
}
}
}

我尝试了流,但没有得到所需的 o/p

List<ComOrderCFS> prss= serviceGroups.stream().map(ServiceGroup::getServices).flatMap(Collection::stream).map
(Service::getSubscriptions).flatMap(Collection::stream).map(Subscription::getPrss).
findFirst().get(); 

无论如何,在 Java 8 中都有它并返回一个布尔值(如果存在(。 如果解决方案有评论,将不胜感激(Java 8 的新手( 谢谢

return serviceGroups.stream()
.map(ServiceGroup::getServices)
.flatMap(Collection::stream)
.map(Service::getSubscriptions)
.flatMap(Collection::stream)
.map(Subscription::getPrss)
.flatMap(Collection::stream)
.map(ComOrderCFS::getCharacteristics)
.flatMap(Collection::stream)
.anyMatch(characteristsic -> "SerialNumber".equals(characteristsic.getName()) && characteristsic.getValue() != null);

编辑:我假设您不想在每次迭代时覆盖flag,而是想验证该列表中的任何一个条目是否满足条件。

最新更新