java - 在Java中计算两个HashMap的keySet的并集

标签 java hashmap set

我想计算两个 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/

相关文章:

通过控制台制作文件的Java错误

Java Swing 用鼠标改变宗教布局的大小

java - Android 2.2 相当于 Java Swing 的 SwingWorker 类?

javascript - 如何从javascript中的索引属性获取值?

javascript - 链接 JS Set 方法会导致 TypeError

java - 常量池中两个String的引用id

Java 合并两个映射

android - 来自 XML 字符串的 HashMap - Android

c++ - Unordered_set 问题

java - java.util.Set.contains(Object o) 的奇怪行为