Java:合并两个 HashMap ?

标签 java hashmap

我尝试实现自己的合并功能,但它变得越来越复杂并且错误越来越多。我想也许 Java 已经有了这个功能,因为这似乎是一个常见的开发问题。

假设我有两个 HashMaps<String, int> :

 HM1.put(foo,1)
 HM1.put(bar,1)

 HM2.put(foo,1)
 HM2.put(main,1)

当它们合并时,新的 HM2 将是这样的:

 [foo: 2]
 [bar, 1]
 [main,1]

最佳答案

您可以迭代第二个 map 并动态更新 HM1:

HM2.entrySet()
   .forEach(entry -> HM1.compute(
            entry.getKey(),
            (key, value) -> value == null ? 
                            entry.getValue() : 
                            entry.getValue() + value));

编辑:
最好使用 .merge (由 lexcore 在 this comment 中建议),这样可以避免对缺失的键不必要地运行计算函数:

HM2.entrySet()
   .forEach(entry -> HM1.merge(
            entry.getKey(),
            entry.getValue(),
            (key, value) -> entry.getValue()   + value));

以上任一操作都会更新 HM1 以获得最终结果。

System.out.println(HM1);

输出:

{bar=1, foo=2, main=1}

关于Java:合并两个 HashMap ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50460205/

相关文章:

java - Linux 核心转储与堆转储?

java - Spring 使用jdbcTemplate批量更新

java - 在 2 个 HashMap 中找到不同的值

java - 使用HashMap动态改变jTable

java - 运行时异常 :Invalid version (expected 2, 但 60) 或 solr 中的数据不是 'javabin' 格式

java - Android Open GL ES z 缓冲区无法在 GL_POINTS 上工作(?)

java - Java 中的紧凑图像编码

android ListView简单适配器,项目重复

Java 8 : Get default value from HashMap and update underlying map

java - 计算和查找事件的有效方法(乐透分析)