#java #java-8 #java-stream
#java #java-8 #java-stream
Вопрос:
У меня есть класс «First», который содержит ссылку на класс «Second» в виде списка. Я пытаюсь достичь приведенного ниже блока способом Java 8, используя Stream (или) flap Map (или) groupingBy
foreach(First a: listOfFirst){
for (Second b: a.getSecondDetails()) {
inputMap.put(b, a);
}
}
Я попробовал приведенный ниже упрощенный способ
listOfFirst.stream()
.flatMap(p -> p.getSecondDetails().stream())
.collect(Collectors.toMap(p -> p, q -> q));
Я здесь чего-то не хватает, пожалуйста, помогите мне
Комментарии:
1. Пожалуйста, уточните этот вопрос
Ответ №1:
Вам нужно «запомнить» First
экземпляр, соответствующий каждому Second
экземпляру. Вы можете сделать это, например, путем создания Map.Entry
экземпляров:
Map<Second,First> result =
listOfFirst.stream()
.flatMap(p->p.getSecondDetails()
.stream()
.map(sec -> new SimpleEntry<>(sec,p))
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue));
Комментарии:
1. Это то, что я ищу!!