map《String, bigdeciamal》指定某些key的value相加并且生成新的key,java
时间: 2024-09-18 15:05:05 浏览: 34
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
在Java中,如果你有一个`Map<String, BigDecimal>`类型的集合,你想对其中指定的一些键(key)对应的值(value)求和,并将结果存储在一个新的键下,你可以这样做:
```java
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// 假设我们有这样一个map
Map<String, BigDecimal> map = new HashMap<>();
map.put("A", new BigDecimal("10.5"));
map.put("B", new BigDecimal("20.75"));
map.put("C", new BigDecimal("15"));
// 定义一个新的键来存放总和
String sumKey = "Total";
// 检查需要累加的键是否存在并计算它们的和
if (map.containsKey("A") && map.containsKey("B")) { // 可以添加更多需要累加的键
BigDecimal total = map.get("A").add(map.get("B")); // 使用BigDecimal的add()方法
map.put(sumKey, total);
System.out.println("Sum of A and B: " + total); // 输出结果
}
// 如果你想累加所有满足条件的键,可以遍历整个map
for (Map.Entry<String, BigDecimal> entry : map.entrySet()) {
if (entry.getKey().startsWith("D")) { // 这里假设D开头的键需要累加
if (sumKey != null && map.containsKey(sumKey)) {
map.get(sumKey).add(entry.getValue());
} else {
map.put(sumKey, entry.getValue());
}
}
}
// 打印最终的map
for (Map.Entry<String, BigDecimal> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
```
阅读全文