合并映射<字符串, 列表<字符串> Java 8 流
2022-09-02 09:52:26
我想将两个Map与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}