Map<String, Integer> snowCodeNumMap = ScrapApply.getDetailList().stream() .collect(Collectors.toMap(ScrapApplyDetailVO::getSnowCode, ScrapApplyDetailVO::getScrapNum, Integer::sum)); 优化下代码
时间: 2024-03-05 20:52:17 浏览: 67
在Java 8中将List转换为Map对象方法
对于上述代码,可以通过使用 `groupingBy` 和 `summingInt` 方法来进行优化,代码如下:
```
Map<String, Integer> snowCodeNumMap =
ScrapApply.getDetailList().stream()
.collect(Collectors.groupingBy(ScrapApplyDetailVO::getSnowCode, Collectors.summingInt(ScrapApplyDetailVO::getScrapNum)));
```
在这段代码中,首先使用 `groupingBy` 方法按照 `ScrapApplyDetailVO::getSnowCode` 的返回值进行分组,然后使用 `summingInt` 方法对分组后的 `ScrapApplyDetailVO` 对象的 `ScrapApplyDetailVO::getScrapNum` 属性进行求和。最终,返回一个 `Map<String, Integer>` 类型的结果,其中键为雪花码,值为报废数量之和。
使用 `groupingBy` 和 `summingInt` 方法进行优化,可以避免手动累加的过程,代码更加简洁和易于理解。同时,这种方式也可以提高程序的性能,因为它会使用并行流来进行分组和求和操作,从而加速程序的执行。
阅读全文