Карта слияния <String, List <String> Java 8 Stream
Я хотел бы объединить две карты с 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
, он будет добавлен как новый ключ с соответствующим списком строк. Если ключ продублирован вmapGlobal
а такжеmapAdded
оба списка значений будут объединены как:A = {1, 3, 5, 7}
а такжеB = {1, 2, 4, 6}
затемA ∪ B = {1, 2, 3, 4, 5, 6, 7}
.