У меня есть два HashMaps, где ключ - это String, а value - ArrayList. Мне нужно объединить эти две карты таким образом, что если -Слияние двух карт <String,List>
- Если ключ уже не существует, ключ должен отображаться с заданным значением.
- Если ключ уже присутствует, я хочу, чтобы существующее значение было объединено с новым значением, то есть существующимList.addAll (newList).
исходный код несколько похож -
для всех ключей проверки карты, если
if (map1.containsKey("key")){
List l = map1.get ("key");
l.addAll(map2.get("key"));
}
else{
map1.put(map2);
}
Я не забочусь о дублирующих элементов здесь. Есть ли чистый способ сделать это? Я прочитал о методе слияния, представленном в Java 8. Но поскольку значения здесь имеют тип List, я ищу более эффективный и чистый способ.
Я бы предложил просто написать его точно так, как вы его описали. Затем вы всегда можете его реорганизовать. – f1sh
Можете добавить код своей первой попытки? Исходя из этого, будет намного легче обсуждать чистоту и эффективность. – reto
Я не уверен, что вы имеете в виду «* Мне не нужны дублирующие элементы здесь *». Кроме того, кажется, что «слияние» - это путь, то есть «map2.forEach ((k, v) -> map1.merge (k, v, (l1, l2) -> {l1.addAll (l2); return l1;})); ' – Holger