如何从一个Map类型的集合中,根据字符串键进行筛选,然后将剩余Map中BigDecimal类型的值相加并返回总和?
时间: 2024-12-26 22:28:51 浏览: 4
要在Java中根据字符串键过滤`Map`,并计算特定键对应的`BigDecimal`值的总和,你可以按照以下步骤操作:
```java
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public BigDecimal calculateTotal(Map<String, BigDecimal> map, String keyFilter) {
Map<String, BigDecimal> filteredMap = map.entrySet().stream() // 获取entrySet流
.filter(entry -> entry.getKey().equals(keyFilter)) // 过滤指定键的条目
.collect(Collectors.toMap(Entry::getKey, Entry::getValue)); // 新建一个Map保存筛选后的结果
if (!filteredMap.isEmpty()) { // 检查是否还有数据
return filteredMap.values().stream() // 获取值流
.reduce(BigDecimal.ZERO, BigDecimal::add); // 用BigDecimal的reduce方法累加
} else {
return BigDecimal.ZERO; // 如果无匹配项,返回0
}
}
```
上述代码首先根据给定的键筛选出Map,并存放在新的Map中,然后计算新Map中所有`BigDecimal`值的总和。
阅读全文