Подтвердить что ты не робот

Объедините два Карты в MultiMap

Каков наилучший способ объединить два Maps в один Guava MultiMap в Java?

Например:

  • Map1 содержит (1, a) и (2, b)
  • Map2 содержит (2, c) и (3, d)

Тогда итоговая комбинированная комбинация будет содержать

  • (1, {a}), (2, {b, c}) и (3, {d})

Это мое текущее решение:

Multimap<T, K> combineMaps(Map<T, K> map1, Map<T, K> map2) {
    Multimap<T, K> multimap = new MultiMap();
    for (final Map.Entry<T, K> entry : map1.entrySet()) {
        multimap.put(entry.getKey(), entry.getValue());
    }
    for (final Map.Entry<T, K> entry : map2.entrySet()) {
        multimap.put(entry.getKey(), entry.getValue());
    }
    return multimap;
}
4b9b3361

Ответ 1

... Какие это мультимаксы? Являются ли они из Гуавы или какой-либо другой библиотеки?

В Гуаве вы можете сделать

multimap.putAll(Multimaps.forMap(map1));
multimap.putAll(Multimaps.forMap(map2));

Ответ 2

Ваше решение выглядит отлично. Вы можете инициализировать это следующим образом:

Multimap<T, K> multimap = new MultiMap(map1);

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