Как создать Мультикарту <K, V> из Карты <K, Набор <V>>?

Я не нашел такую конструкцию мультикарты... Когда я хочу сделать это, я выполняю итерации по карте и заполняю мультикарту. Существует ли другой путь?

final Map<String, Collection<String>> map = ImmutableMap.<String, Collection<String>>of(
            "1", Arrays.asList("a", "b", "c", "c"));
System.out.println(Multimaps.forMap(map));

final Multimap<String, String> expected = ArrayListMultimap.create();
for (Map.Entry<String, Collection<String>> entry : map.entrySet()) {
    expected.putAll(entry.getKey(), entry.getValue());
}
System.out.println(expected);

Первый результат {1=[[a, b, c, c]]} но я ожидаю {1=[a, b, c, c]}

43
задан Alexander Farber 24 February 2016 в 11:34
поделиться

2 ответа

Если у вас есть

Map<String, Collection<String>> map = ...;
Multimap<String, String> multimap = ArrayListMultimap.create();

Тогда я считаю, что это лучшее, что вы можете сделать

for (String key : map.keySet()) {
  multimap.putAll(key, map.get(key));
}

или более оптимальный, но более сложный для чтения

for (Entry<String, Collection<String>> entry : map.entrySet()) {
  multimap.putAll(entry.getKey(), entry.getValue());
}
47
ответ дан 26 November 2019 в 23:00
поделиться

ОБНОВЛЕНИЕ: Я думаю, что для того, о чем вы спрашиваете, вам нужно будет вернуться к Multimap.putAll .

2
ответ дан 26 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: