У меня есть два (скажем, map1 и map2), которые могут содержать один и тот же набор ключей, но разные значения.Для каждого соответствующего ключа в обоих я хочу поместить ключ и его соответствующие значения из обоих в третью Multimap.Я просмотрел все связанные вопросы по StackOverFlow, но ни один из них не дает конкретного решения проблемы.
Мой вопрос был помечен как дубликат Объединение двух карт в MultiMap .Мой вопрос стремятся собрать из двух разных Guava HashMultimap (не java.util.Map) в третье Guava HashMultimap.
Multimap<String, Collection<ArrayList<Double>>> combineMaps(Multimap<String, ArrayList<Double>> map1, Multimap<String, ArrayList<Double>> map2) {
Collection<ArrayList<Double>> combinedList = new ArrayList<ArrayList<Double>>();
Collection<ArrayList<Double>> list1 = new ArrayList<ArrayList<Double>>();
Collection<ArrayList<Double>> list2 = new ArrayList<ArrayList<Double>>();
map1.forEach((key, value) -> {
if(map2.containsKey(key)) {
list1 = (map1.get(key));
list2 = (map2.get(key));
combinedList.addAll(list1);
combinedList.addAll(list2);
multimap.put(key, combinedList);
}
});
return multimap;
}
Например, если map1 содержит пары ключ-значение key1 = {2.0, 3.1}
keyb = {3.2, 0.8}
И map2 содержит keyz= {2.7, 1.2}
keyb = {5.9, 7.6}
key1 = {3.1, 9.4}
Объединенная карта будет содержать key1 = {2.0, 3.1, 3.1, 9.4}
keyb = {3.2, 0.8, 5.9, 7.6}
Обратите внимание, что keyz не будет сохранен в комбинированной карте, так как в map1 не встречается keyz.