我想计算两个哈希映射的键的并集.我写了下面的代码(MWE如下),但我
获取UnsupportedOperationException.实现这一目标会有什么好处?
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);
}
}
Run Code Online (Sandbox Code Playgroud)
那么,union是不是复制的one,它是 one.这是 first.keySet().并且first.keySet()不是密钥的副本first,它是一个视图,并且不支持添加,如中所述Map.keySet().
所以你需要实际复制一份.最简单的方法就是写
one = new HashSet<String>(first);
Run Code Online (Sandbox Code Playgroud)
它使用"复制构造函数" HashSet来进行实际复制,而不是仅仅引用同一个对象.
| 归档时间: |
|
| 查看次数: |
1820 次 |
| 最近记录: |