一、两个Map<String, Decimal>相同key相加,不同则保留
public static void main(String[] args) {
Map<String, BigDecimal> map1 = new HashMap<>();
Map<String, BigDecimal> map2 = new HashMap<>();
map1.put("a", BigDecimal.ONE);
map1.put("b", BigDecimal.ONE);
map1.put("c", BigDecimal.ONE);
map2.put("a", BigDecimal.TEN);
map2.put("b", BigDecimal.TEN);
map2.put("d", BigDecimal.TEN);
System.out.println(map1);
System.out.println(map2);
for (String key : map1.keySet()){
if (map2.containsKey(key)){
map2.put(key, map2.get(key).add(map1.get(key)));
} else {
map2.put(key, map1.get(key));
}
}
System.out.println(map2);
}
运行结果:
二、同理List <Map<String, Decimal>>集合,相同KEY的value值相加,不同则保留的方法
public static void main(String[] args) {
// map数组
List<Map<String, BigDecimal>> mapList = new ArrayList<>();
// 结果数组
Map<String, BigDecimal> mapResult = new HashMap<>();
Map<String, BigDecimal> map1 = new HashMap<>();
Map<String, BigDecimal> map2 = new HashMap<>();
map1.put("a", BigDecimal.ONE);
map1.put("b", BigDecimal.ONE);
map1.put("c", BigDecimal.ONE);
map2.put("a", BigDecimal.TEN);
map2.put("b", BigDecimal.TEN);
map2.put("d", BigDecimal.TEN);
System.out.println(map1);
System.out.println(map2);
// map数组中有两个map
mapList.add(map1);
mapList.add(map2);
// 遍历map数组,将数组中key相同的值相加,key不同的值保留,结果放到mapResult中
mapList.forEach(map -> {
for (String key : map.keySet()){
if (mapResult.containsKey(key)){
mapResult.put(key, mapResult.get(key).add(map.get(key)));
} else {
mapResult.put(key, map.get(key));
}
}
});
System.out.println(mapResult);
}
运行结果: