Java 合并两个哈希映射的成本

Java 合并两个哈希映射的成本,java,performance,asymptotic-complexity,Java,Performance,Asymptotic Complexity,假设我有两个hashmap,如下所示 HashMap<Character, Integer> map1 = new HashMap<Character, Integer>(); HashMap<Character, Integer> map2 = new HashMap<Character, Integer>(); HashMap map1=newhashmap(); HashMap map2=新的HashMap(); 现在,我想将这两个元素合

假设我有两个hashmap,如下所示

HashMap<Character, Integer> map1 = new HashMap<Character, Integer>();
HashMap<Character, Integer> map2 = new HashMap<Character, Integer>();
HashMap map1=newhashmap();
HashMap map2=新的HashMap();
现在,我想将这两个元素合并在一起,并将它们作为map3放到另一个HashMap中


就渐进复杂性而言,最好的方法是什么。

就渐进复杂性而言,它意味着创建一个新的映射并将每个映射的所有元素添加到其中。所以T(插入)*(m+n)(如果这是家庭作业,我不会透露答案!)。java哈希映射并不比教科书哈希映射更有效,因此没有快捷方式。最后,如果您可以任意修改这两个贴图中的任何一个,我建议将较小的贴图合并为较大的贴图。这将节省遍历大型映射所花费的时间,并可能节省一些内存分配所花费的时间。

最简单的方法是:

HashMap<Character, Integer> map3 = new HashMap<Character, Integer>();
map3.putAll(map1);
map3.putAll(map2);
HashMap map3=newhashmap();
map3.putAll(map1);
map3.putAll(map2);

希望这有帮助。

也可以使用复制构造函数
HashMap-map3=newhashmap(map1)
然后
map3.putAll(map2)
这里有一个来源供您进一步考虑如果您关心性能,您可以使用
int[]
,前提是您可以假设要计数的字母范围。这具有相同的时间复杂性,但速度要快很多倍。