Merge Map <String, Liste <String> Java 8 Stream
Ich möchte zwei Map mit JAVA 8 Stream zusammenführen:
Map<String, List<String>> mapGlobal = new HashMap<String, List<String>>();
Map<String, List<String>> mapAdded = new HashMap<String, List<String>>();
Ich versuche, diese Implementierung zu verwenden:
mapGlobal = Stream.of(mapGlobal, mapAdded)
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue,
Collectors.toList())
));
Diese Implementierung erzeugt jedoch nur ein Ergebnis wie:
Map<String, List<Object>>
Wenn ein Schlüssel nicht im @ enthalten imapGlobal
, es würde als neuer Schlüssel mit der entsprechenden Liste der Zeichenfolge hinzugefügt. Wenn der Schlüssel in @ dupliziert imapGlobal
undmapAdded
, beide Wertelisten werden zusammengeführt als:A = {1, 3, 5, 7}
undB = {1, 2, 4, 6}
dannA ∪ B = {1, 2, 3, 4, 5, 6, 7}
.