Я пытаюсь фильтровать и собирать объекты с условием, используя потоки Java8
У меня есть список экземпляров, который имеет вложенный список элементов
public class Model {
List<Instance> instances;
}
public class Instance {
private String name;
List<Element> elements;
}
public class Element {
private String partNumber;
}
Ниже приведен пример josn
{
"instances": [
{
"name": "instance1",
"elements": [
{
"partNumber": "partNumber1"
},
{
"partNumber": "partNumber2"
}
]
},
{
"name": "instance2",
"elements": [
{
"partNumber": "partNumber3"
},
{
"partNumber": "partNumber4"
}
]
}
]
}
И другой объект ответа
public class Response {
private List<Domain> domains;
}
public class Domain {
private String name;
private List<Hardware> hardwares;
}
public class Hardware {
private String partNumber;
}
sample json
{
"domains": [
{
"name": "domain1",
"hardwares": [
{
"partNumber": "partNumber1"
}
]
},
{
"name": "domain2",
"hardwares": [
{
"partNumber": "partNumber2"
},
{
"partNumber": "partNumber3"
},
{
"partNumber": "partNumber4"
}
]
},
{
"name": "domain3",
"hardwares": [
{
"partNumber": "partNumber5"
},
{
"partNumber": "partNumber6"
}
]
}
]
}
Я пытаюсь передавать и собирать объекты ответа, сравнивая, если Hardwares
из доменапо крайней мере, содержат по одному partnumber
от каждого элемента запроса.Это означает, что по крайней мере один hardware
от каждого Instance
должен присутствовать в Domains
hardwares
, чтобы считаться Domain
действительным.
Для приведенных выше примеров данных,
- domain1 не является допустимым доменом, поскольку он содержит только один
partnumber
partNumber1
от instance1
, но не содержит по крайней мере один partnumber
от instance2
- domain2 является допустимым доменомпотому что он содержит по крайней мере один
partnumber
partNumber2
из instance1
и содержит по крайней мере один partnumber
partNumber3
из instance2
.Он может содержать дополнительные номера участников, и это нормально. - domain3 не является допустимым доменом, поскольку он не содержит по крайней мере один
partnumber
из instance1
и не содержит по крайней мере один partnumber
из instance2
Я начал писать
request.getInstances().stream().flatMap(instance -> instance.getElement().stream().filter(element -> response.getDomains().stream().flatMap(domain -> domain.getHardwares.stream().anyMatch(hardware-> element.contains()
, но у меня возникли трудности с завершением, так как у меня ограниченное понимание потоков