我想计算两个 HashMap 的键的并集。我写了下面的代码(下面是MWE),但是我
获取不支持的操作异常。完成这个有什么好处?
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class AddAll {
public static void main(String args[]){
Map<String, Integer> first = new HashMap<String, Integer>();
Map<String, Integer> second = new HashMap<String, Integer>();
first.put("First", 1);
second.put("Second", 2);
Set<String> one = first.keySet();
Set<String> two = second.keySet();
Set<String> union = one;
union.addAll(two);
System.out.println(union);
}
}
最佳答案
因此,union
不是 one
的副本,它是 one
>。它是first.keySet()
。并且 first.keySet()
不是 first
的键的副本,it's a view, and won't support adds ,如 Map.keySet()
中所述。
所以你需要实际复制一份。最简单的方法可能是写
one = new HashSet<String>(first);
它使用HashSet
的“复制构造函数”来执行实际的复制,而不是仅仅引用同一个对象。
关于java - 在Java中计算两个HashMap的keySet的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14886525/