【发布时间】:2015-11-06 22:41:39
【问题描述】:
代码如下:
private static Map<String, Set<String>> merge(Map<String, Set<String>> m1, Map<String, Set<String>> m2) {
Map<String, Set<String>> mx = new HashMap<String, Set<String>>();
for (Entry<String, Set<String>> entry : m1.entrySet()) {
Set<String> otherMapValue = m2.get(entry.getKey());
if (otherMapValue == null) {
mx.entrySet().add(entry);
} else {
Set<String> merged = new HashSet<String>();
merged.addAll(entry.getValue());
merged.addAll(otherMapValue);
mx.put(entry.getKey(), merged);
}
}
return mx;
}
这会引发以下错误:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractCollection.add(Unknown Source)
at algorithms.NetworkBuilder.merge(NetworkBuilder.java:86)
at algorithms.NetworkBuilder.build(NetworkBuilder.java:38)
at algorithms.Main.main(Main.java:35)
我只找到了不包含集合的地图的解决方案,它们对我不起作用,因为如果两个地图中都出现键,我还需要合并集合。
我想要做的是创建一个新映射,其中包含两个映射之一或两个映射的每个键都映射到它在原始两个映射中映射到的列表的并集。
【问题讨论】:
标签: java merge hashmap java-8 hashset