Контекст проблемы:
Объект Person содержит 3 поля, из которых 1 поле является списком Family List<Family>
Объект Family содержит 3 поля, то есть name, age, hobbies
.
В моем классе TaskService у меня есть метод create, который принимает person в качестве аргумента из интерфейса create(Person)
.
В запросе, когда объект person приходит, у него есть 2 заполненных поля для List<Family>
, но один не заполнен.
Так что я должен позвонить в другую службу, которая возвращает мне Map<String, Family>
.
Так что мне нужно, для соответствующего лица переберите список хобби и заполните это пропущенное поле в аргументе списка типов лиц.
Я его реализую, но это приводит меня к вложенным циклам foreach, которых я хочу избежать. Я знаю, что этого можно избежать с помощью flatMap, но я не уверен, каким образом.
familyTypeService.getFamilyTypes(person.id).forEach {
if(it.value.hobbies == person[0].family.hobbies) {
person[0].family.label = it.value.label
}
}
Я могу реализовать это так, но только для первого элемента.
Как я могу это сделать для всех элементов в списке?
Я ожидаю что-то вроде:
Person.family.flatMap {
FamilyTypeService.getFamilyTypes(person.id)………
}