如何在Java中使用Stream API对BigDecimal类型的元素进行分组并计算每个组的总和?
时间: 2024-10-22 21:11:50 浏览: 24
在Java中,你可以使用`Stream` API结合`Collectors.groupingBy()`和`Collectors.summingBigDecimal()`来对`BigDecimal`类型的元素进行分组并计算每个组的总和。下面是一个示例:
```java
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
List<BigDecimal> numbers = Arrays.asList(
new BigDecimal("10"),
new BigDecimal("20"),
new BigDecimal("15"),
new BigDecimal("25"),
new BigDecimal("10")
);
// 使用Stream API进行分组并计算总和
Map<String, BigDecimal> sumMap = numbers.stream()
.collect(Collectors.groupingBy(number -> number.setScale(0, RoundingMode.HALF_UP).toString(), // 根据四舍五入后的整数分组
Collectors.summingBigDecimal()));
// 打印结果
sumMap.forEach((groupName, groupSum) -> System.out.println("Group: " + groupName + ", Total: " + groupSum));
```
在这个例子中,我们首先将`BigDecimal`转换成字符串,并且四舍五入到最接近的整数来进行分组。然后使用`Collectors.summingBigDecimal()`收集每个组的总和。
阅读全文