Соедините 2 карты Java 8, используя потоки - PullRequest
0 голосов
/ 25 октября 2018

У меня есть 2 Карты

Map<A, B> mapA
Map<B, List<C>> mapB

Я хочу объединить эти карты на значениях в mapA и ключах в mapB, результат должен быть

Map<A,List<C>> mapC

Я хочу знать, какмогу ли я сделать это используя потоки в Java8.

A, B, C для простоты, все это строки в моем случае.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы можете сделать это так:

mapC = mapA.entrySet()
        .stream()
        .collect(Collectors.toMap(Map.Entry::getKey, e -> mapB.get(e.getValue())));
0 голосов
/ 25 октября 2018

Вы можете перебирать карту и легко создавать новую карту.

Map<A,List<C>> mapC = new HashMap<>();

mapA.forEach((key,value)->mapC.put(key, mapB.get(value)));

Вы можете использовать эту ссылку, которая сравнивает эффективность различных способов перебора по ключу.пары значений, чтобы выбрать, какой метод вы хотите использовать.

...