上面的Ads.price是个BigDecimal ,该怎么做
时间: 2024-12-18 10:37:32 浏览: 1
js的BigDecimal.js 用于表示金额,修改为vue引用,含原版
如果`Ads.price`是`BigDecimal`类型,处理方式稍微有所不同,因为`sum()`方法默认适用于`Number`类型,对于`BigDecimal`我们需要明确转换。以下是修改后的代码:
```java
BigDecimal totalPrice = map.values().stream()
.map(Ads::getPrice) // 获取每个Ads的价格
.reduce(BigDecimal.ZERO, BigDecimal::add); // 使用BigDecimal的reduce方法求和
System.out.println("Total price: " + totalPrice);
```
`reduce()`方法接受一个初始值(这里是`BigDecimal.ZERO`)和一个结合操作(这里是`BigDecimal::add`),它会对所有的`price`值进行加法运算。
如果你需要按键分组并求和每个代码对应的大额数,同样可以使用`groupingBy()`和`reducing()`:
```java
Map<String, BigDecimal> pricesPerCode = map.entrySet().stream()
.collect(Collectors.groupingBy(
Map.Entry::getKey,
Collectors.reducing(BigDecimal.ZERO, Ads::getPrice, BigDecimal::add)));
pricesPerCode.forEach((code, total) -> System.out.println("Code: " + code + ", Total Price: " + total));
```
这次得到的结果是`Map<String, BigDecimal>`,每个键对应的值是相应代码下所有`Ads`价格的总和,类型保持为`BigDecimal`。
阅读全文