Я хотел бы объединить две карты с JAVA 8 Stream:
Map<String, List<String>> mapGlobal = new HashMap<String, List<String>>();
Map<String, List<String>> mapAdded = new HashMap<String, List<String>>();
Я пытаюсь использовать эту реализацию:
mapGlobal = Stream.of(mapGlobal, mapAdded)
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue,
Collectors.toList())
));
Однако эта реализация создает только результат:
Map<String, List<Object>>
Если один ключ не содержится в mapGlobal
, он будет добавлен как новый ключ с соответствующим списком String. Если ключ дублируется в mapGlobal
и mapAdded
, оба списка значений будут объединены как: A = {1, 3, 5, 7}
и B = {1, 2, 4, 6}
, затем A ∪ B = {1, 2, 3, 4, 5, 6, 7}
.