/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.stream.Collectors;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
List
<Package
> packageList
= new ArrayList
<>(List.
of( new Package(13L,
"Normal",
new ArrayList
<>(List.
of(new Service
(100L,
"China")))),
new Package(10L,
"Full",
new ArrayList
<>(List.
of(new Service
(100L,
"Spain")))),
new Package(5L,
"Full",
new ArrayList
<>(List.
of(new Service
(100L,
"Japan")))) ));
HashMap
<String, Object
> stringObjectHashMap
= new HashMap
<>(); boolean isFound = packageList.stream()
.filter(pack -> "Full".equalsIgnoreCase(pack.getPackageName()))
.map(pack -> {
stringObjectHashMap.put("packageId", pack.getPackageId());
return pack;
})
.flatMap(pack -> pack.getServiceList().stream())
.filter(service -> service.getLocation().equalsIgnoreCase("Japan"))
.map(service -> {
stringObjectHashMap.put("serviceId", service.getServiceId());
return service;
})
.anyMatch(service -> service.getLocation().equalsIgnoreCase("Japan"));
System.
out.
println("isFound: " + isFound
);
Map
<String, Long
> mapRes
= packageList.
stream() .filter(pack -> pack.getPackageName().equalsIgnoreCase("Full") && pack.getServiceList().stream().anyMatch(s -> s.getLocation().equalsIgnoreCase("Japan")))
.collect(Collectors.teeing(
Collectors.toMap(p -> "packageId", Package::getPackageId, (id1, id2) -> id1),
Collectors.flatMapping(pack -> pack.getServiceList().stream(), Collectors.toMap(s -> "serviceId", Service::getServiceId, (id1, id2) -> id1)),
(map1, map2) -> {
map1.putAll(map2);
return map1;
}));
boolean isFound2 = mapRes.entrySet().size() == 2;
System.
out.
println("\nMap: " + mapRes
); System.
out.
println("isFound: " + isFound2
); }
static class Package {
List<Service> serviceList;
public Package(Long packageId,
String packageName, List
<Service
> serviceList
) { this.packageId = packageId;
this.packageName = packageName;
this.serviceList = serviceList;
}
public Long getPackageId
() { return packageId;
}
public String getPackageName
() { return packageName;
}
public List<Service> getServiceList() {
return serviceList;
}
}
static class Service {
this.serviceId = serviceId;
this.location = location;
}
public Long getServiceId
() { return serviceId;
}
return location;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLkNvbGxlY3RvcnM7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCUxpc3Q8UGFja2FnZT4gcGFja2FnZUxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oTGlzdC5vZigKICAgICAgICAgICAgICAgIG5ldyBQYWNrYWdlKDEzTCwgIk5vcm1hbCIsIG5ldyBBcnJheUxpc3Q8PihMaXN0Lm9mKG5ldyBTZXJ2aWNlKDEwMEwsICJDaGluYSIpKSkpLAogICAgICAgICAgICAgICAgbmV3IFBhY2thZ2UoMTBMLCAiRnVsbCIsIG5ldyBBcnJheUxpc3Q8PihMaXN0Lm9mKG5ldyBTZXJ2aWNlKDEwMEwsICJTcGFpbiIpKSkpLAogICAgICAgICAgICAgICAgbmV3IFBhY2thZ2UoNUwsICJGdWxsIiwgbmV3IEFycmF5TGlzdDw+KExpc3Qub2YobmV3IFNlcnZpY2UoMTAwTCwgIkphcGFuIikpKSkKICAgICAgICApKTsKCiAgICAgICAgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4gc3RyaW5nT2JqZWN0SGFzaE1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBib29sZWFuIGlzRm91bmQgPSBwYWNrYWdlTGlzdC5zdHJlYW0oKQogICAgICAgICAgICAgICAgLmZpbHRlcihwYWNrIC0+ICJGdWxsIi5lcXVhbHNJZ25vcmVDYXNlKHBhY2suZ2V0UGFja2FnZU5hbWUoKSkpCiAgICAgICAgICAgICAgICAubWFwKHBhY2sgLT4gewogICAgICAgICAgICAgICAgICAgIHN0cmluZ09iamVjdEhhc2hNYXAucHV0KCJwYWNrYWdlSWQiLCBwYWNrLmdldFBhY2thZ2VJZCgpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFjazsKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuZmxhdE1hcChwYWNrIC0+IHBhY2suZ2V0U2VydmljZUxpc3QoKS5zdHJlYW0oKSkKICAgICAgICAgICAgICAgIC5maWx0ZXIoc2VydmljZSAtPiBzZXJ2aWNlLmdldExvY2F0aW9uKCkuZXF1YWxzSWdub3JlQ2FzZSgiSmFwYW4iKSkKICAgICAgICAgICAgICAgIC5tYXAoc2VydmljZSAtPiB7CiAgICAgICAgICAgICAgICAgICAgc3RyaW5nT2JqZWN0SGFzaE1hcC5wdXQoInNlcnZpY2VJZCIsIHNlcnZpY2UuZ2V0U2VydmljZUlkKCkpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlOwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5hbnlNYXRjaChzZXJ2aWNlIC0+IHNlcnZpY2UuZ2V0TG9jYXRpb24oKS5lcXVhbHNJZ25vcmVDYXNlKCJKYXBhbiIpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImlzRm91bmQ6ICIgKyBpc0ZvdW5kKTsKCiAgICAgICAgTWFwPFN0cmluZywgTG9uZz4gbWFwUmVzID0gcGFja2FnZUxpc3Quc3RyZWFtKCkKICAgICAgICAgICAgICAgIC5maWx0ZXIocGFjayAtPiBwYWNrLmdldFBhY2thZ2VOYW1lKCkuZXF1YWxzSWdub3JlQ2FzZSgiRnVsbCIpICYmIHBhY2suZ2V0U2VydmljZUxpc3QoKS5zdHJlYW0oKS5hbnlNYXRjaChzIC0+IHMuZ2V0TG9jYXRpb24oKS5lcXVhbHNJZ25vcmVDYXNlKCJKYXBhbiIpKSkKICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudGVlaW5nKAogICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0b3JzLnRvTWFwKHAgLT4gInBhY2thZ2VJZCIsIFBhY2thZ2U6OmdldFBhY2thZ2VJZCwgKGlkMSwgaWQyKSAtPiBpZDEpLAogICAgICAgICAgICAgICAgICAgICAgICBDb2xsZWN0b3JzLmZsYXRNYXBwaW5nKHBhY2sgLT4gcGFjay5nZXRTZXJ2aWNlTGlzdCgpLnN0cmVhbSgpLCBDb2xsZWN0b3JzLnRvTWFwKHMgLT4gInNlcnZpY2VJZCIsIFNlcnZpY2U6OmdldFNlcnZpY2VJZCwgKGlkMSwgaWQyKSAtPiBpZDEpKSwKICAgICAgICAgICAgICAgICAgICAgICAgKG1hcDEsIG1hcDIpIC0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcDEucHV0QWxsKG1hcDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICBib29sZWFuIGlzRm91bmQyID0gbWFwUmVzLmVudHJ5U2V0KCkuc2l6ZSgpID09IDI7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJcbk1hcDogIiArIG1hcFJlcyk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpc0ZvdW5kOiAiICsgaXNGb3VuZDIpOwoJfQoJCglzdGF0aWMgY2xhc3MgUGFja2FnZSB7CiAgICAgICAgTG9uZyBwYWNrYWdlSWQ7CiAgICAgICAgU3RyaW5nIHBhY2thZ2VOYW1lOwogICAgICAgIExpc3Q8U2VydmljZT4gc2VydmljZUxpc3Q7CgogICAgICAgIHB1YmxpYyBQYWNrYWdlKExvbmcgcGFja2FnZUlkLCBTdHJpbmcgcGFja2FnZU5hbWUsIExpc3Q8U2VydmljZT4gc2VydmljZUxpc3QpIHsKICAgICAgICAgICAgdGhpcy5wYWNrYWdlSWQgPSBwYWNrYWdlSWQ7CiAgICAgICAgICAgIHRoaXMucGFja2FnZU5hbWUgPSBwYWNrYWdlTmFtZTsKICAgICAgICAgICAgdGhpcy5zZXJ2aWNlTGlzdCA9IHNlcnZpY2VMaXN0OwogICAgICAgIH0KCiAgICAgICAgcHVibGljIExvbmcgZ2V0UGFja2FnZUlkKCkgewogICAgICAgICAgICByZXR1cm4gcGFja2FnZUlkOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIFN0cmluZyBnZXRQYWNrYWdlTmFtZSgpIHsKICAgICAgICAgICAgcmV0dXJuIHBhY2thZ2VOYW1lOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIExpc3Q8U2VydmljZT4gZ2V0U2VydmljZUxpc3QoKSB7CiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlTGlzdDsKICAgICAgICB9CiAgICB9CgogICAgc3RhdGljIGNsYXNzIFNlcnZpY2UgewogICAgICAgIExvbmcgc2VydmljZUlkOwogICAgICAgIFN0cmluZyBsb2NhdGlvbjsKCiAgICAgICAgcHVibGljIFNlcnZpY2UoTG9uZyBzZXJ2aWNlSWQsIFN0cmluZyBsb2NhdGlvbikgewogICAgICAgICAgICB0aGlzLnNlcnZpY2VJZCA9IHNlcnZpY2VJZDsKICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIExvbmcgZ2V0U2VydmljZUlkKCkgewogICAgICAgICAgICByZXR1cm4gc2VydmljZUlkOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIFN0cmluZyBnZXRMb2NhdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KfQ==