Java Реконструкция структуры данных с использованием лямбда-выражения - PullRequest
0 голосов
/ 03 мая 2018

У меня есть следующие отношения: класс A имеет список объектов класса B, класс B имеет объект класса C и объект класса D. Класс C имеет строку E, класс D имеет целое число F.Class От C до класса D - это отношение один ко многим.

Учитывая карту <String, List<A>>, как я могу восстановить ее на карту <F, E>?

Заранее спасибо!

1 Ответ

0 голосов
/ 03 мая 2018

Связано ли String в Map<String, List<A>> с выходом? Я предполагаю, что вы хотите получить каждую пару <F, E> с оригинальной карты, верно? Так что это может помочь

Map<String, List<A>> input;
input.values().stream()
     .flatMap(Collection::stream)
     .map(a -> a.getListB()) // extract list B from A
     .flatMap(Collection::stream) // Here you get all B instances
     .collect(
         toMap(
            b -> b.getD().getF(), b -> b.getC().getE(), 
            (e1, e2) -> ??? // Here you should define your own merge function if there are two B instances has same F values
          )
     );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...