我尝试实现自己的合并功能,但它变得越来越复杂并且错误越来越多。我想也许 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/