如何轻松地将两个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