java 8将字段unit相同的行上的quantity相加ListOdsMaterialbomItem realDiff
可以使用Java 8的流式操作和分组聚合来实现。具体代码如下:
Map<String, Double> unitQuantityMap = realDiff.stream()
.collect(Collectors.groupingBy(OdsMaterialbomItem::getUnit,
Collectors.summingDouble(OdsMaterialbomItem::getQuantity)));
上面的代码中,首先使用stream()方法将realDiff转换成流,然后使用groupingBy()方法按照unit字段进行分组,最后使用summingDouble()方法将相同unit的quantity相加,得到一个以unit为键,相同unit的quantity总和为值的Map对象。
如果需要将结果转换成List<OdsMaterialbomItem>对象,可以使用map()方法和构造函数引用来实现:
List<OdsMaterialbomItem> result = unitQuantityMap.entrySet().stream()
.map(e -> new OdsMaterialbomItem(e.getKey(), e.getValue()))
.collect(Collectors.toList());
上面的代码中,首先使用entrySet()方法将Map对象转换成Set对象,然后使用stream()方法将Set对象转换成流,接着使用map()方法将每个Map.Entry对象转换成对应的OdsMaterialbomItem对象,最后使用collect()方法将结果转换成List<OdsMaterialbomItem>对象。构造函数引用OdsMaterialbomItem::new可以方便地创建OdsMaterialbomItem对象
原文地址: https://www.cveoy.top/t/topic/hqZF 著作权归作者所有。请勿转载和采集!