如何轻松地将两个hashMap相加?

我有两个 HashMap<String,Integer>

我如何轻松总结它们?

意思是对于字符串“ a”,键将是(来自Map1的值+来自Map2的值)的总和?

我可以迭代Map2的每个项目,然后手动将其添加到Map1。

但是认为可能会有更简单的方法吗?

我更喜欢将Integers汇总到其中一张地图中。不创建一个新的

回答:

由于Java 8

Map包含merge需要

  • 键,
  • 新价值,
  • 和函数, 如果该值已经包含我们的密钥 ,它将用来决定要在地图中放置什么值(将基于新旧值进行决策)。

因此,您可以简单地使用:

map2.forEach((k, v) -> map1.merge(k, v, Integer::sum));

现在,您map1将包含的所有值,map2并且如果键相同,则将旧值添加到新值中,并将结果存储在map中。

演示:

Map<String, Integer> m1 = new HashMap<>();

m1.put("a", 1);

m1.put("b", 2);

Map<String, Integer> m2 = new HashMap<>();

m2.put("a", 3);

m2.put("c", 10);

System.out.println(m1);

System.out.println(m2);

//iterate over second map and merge its elements into map 1 using

//same key and sum of values

m2.forEach((k, v) -> m1.merge(k, v, Integer::sum));

System.out.println("===========");

System.out.println(m1);

输出:

{a=1, b=2}

{a=3, c=10}

===========

{a=4, b=2, c=10}

以上是 如何轻松地将两个hashMap相加? 的全部内容, 来源链接: utcz.com/qa/423243.html

回到顶部