【问题标题】:Cost of merging two hashmaps合并两个哈希图的成本
【发布时间】:2014-03-11 03:06:04
【问题描述】:

假设我有两个 HashMap 如下

HashMap<Character, Integer> map1 = new HashMap<Character, Integer>();
HashMap<Character, Integer> map2 = new HashMap<Character, Integer>();

现在我想将这两个合并在一起,并将它们作为 map3 放入另一个 HashMap

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

【问题讨论】:

  • 如果您担心性能,您可以使用int[],前提是您可以对要计算的字母范围做出假设。这具有相同的时间复杂度,但速度要快很多倍。

标签: java performance asymptotic-complexity


【解决方案1】:

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

【讨论】:

【解决方案2】:

做你想做的最简单的方法是:

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

希望这会有所帮助。

【讨论】:

  • 也可以使用复制构造函数HashMap&lt;Character, Integer&gt; map3 = new HashMap&lt;Character, Integer&gt;(map1); 然后map3.putAll(map2)
猜你喜欢
  • 2011-04-23
  • 2018-10-31
  • 2016-09-02
  • 2014-10-01
  • 2016-10-07
  • 2013-10-18
  • 2017-12-18
  • 1970-01-01
相关资源
最近更新 更多