Class Package{
Long packageId;
String packageName;
List<Service> serviceList;
}
Class Service{
Long serviceId;
String location;
}
List <Package> packageList上面是我的类,要求从外部列表收集packageId,packageList和serviceId从内部列表(每个Package的Services )收集packageList.packageName == "Full"和serviceList.location == "Japan"。另外,我需要知道这种记录是否存在。这就是我到目前为止所写的将数据收集到HashMap中的内容。
HashMap<String,Object> stringObjectHashMap = new HashMap<>();
boolean isFound = packageList.stream()
.filter(package -> "Full".equalsIgnoreCase(package.getPackageName()))
.peek(package ->stringObjectHashMap.put("packageId",package.getPackageId()))
.flatMap(package -> package.getServiceList().stream())
.filter(service -> service.getLocation().equalsIgnoreCase("Japan"))
.peek(service -> stringObjectHashMap.put("serviceId",service.getServiceId()))
.anyMatch(service -> service.getLocation().equalsIgnoreCase("Japan"));问题是声纳抱怨在流中使用peek()。它说“根据它的JavaDocs,中间流操作java.util.Stream.peek()”的存在主要是为了支持调试的目的。
有人能提出更好的解决方案吗?
样本输入:
[
{
"packageId": 13,
"packageName": "Normal",
"serviceList": [
{
"serviceId": "100",
"location": "China"
}
]
},
{
"packageId": 10,
"packageName": "Full",
"serviceList": [
{
"serviceId": "100",
"location": "Spain"
}
]
},
{
"packageId": 5,
"packageName": "Full",
"serviceList": [
{
"serviceId": "100",
"location": "Japan"
}
]
}
]预期产出,
"packageId": 5 //this is from outer list
"serviceId": 100 //this is from inner list注意: "Full"包可以多次出现。除了位置之外,"Japan"还可以多次出现在服务中。但是,packageName与值"Full"和location "Japan"的组合只能出现一次。
https://stackoverflow.com/questions/72352454
复制相似问题