ScrapApplyDetailVO::getScrapNum 是BigDecimal 如何优化
时间: 2024-01-09 17:04:16 浏览: 120
如果 ScrapApplyDetailVO::getScrapNum 的返回值为 BigDecimal 类型,那么可以使用 `summingBigDecimal` 方法来进行求和操作,代码如下:
```
Map<String, BigDecimal> snowCodeNumMap =
ScrapApply.getDetailList().stream()
.collect(Collectors.groupingBy(ScrapApplyDetailVO::getSnowCode, Collectors.mapping(ScrapApplyDetailVO::getScrapNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
```
在这段代码中,使用 `mapping` 方法将 ScrapApplyDetailVO::getScrapNum 映射为 BigDecimal 类型,然后使用 `reducing` 方法对这些 BigDecimal 进行累加操作。最终,返回一个 `Map<String, BigDecimal>` 类型的结果,其中键为雪花码,值为报废数量之和。
需要注意的是,使用 `summingBigDecimal` 方法可能会造成精度丢失的问题,因为 BigDecimal 的加法操作可能会产生舍入误差。如果需要更高的精度,可以使用 `reducing` 方法进行累加操作,但是这样可能会影响程序的性能,因为每次进行加法操作都需要创建一个新的 BigDecimal 对象。
阅读全文