java8 利用stream合并ListOdsMaterialDocumentItem items 中字段material相同的数量quantityInEntryUnit字段quantityInEntryUnit为string不能损失精度
可以使用groupingBy对material字段进行分组,然后使用mapping对每个分组中的quantityInEntryUnit字段进行转换为BigDecimal类型,最后使用reducing对每个分组中的quantityInEntryUnit进行求和,最终得到一个Map<String, BigDecimal>,其中key为material字段,value为对应的quantityInEntryUnit总和。
代码示例:
Map<String, BigDecimal> result = items.stream()
.collect(Collectors.groupingBy(OdsMaterialDocumentItem::getMaterial,
Collectors.mapping(item -> new BigDecimal(item.getQuantityInEntryUnit()),
Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
``
原文地址: https://www.cveoy.top/t/topic/ht3I 著作权归作者所有。请勿转载和采集!