可以使用Java 8的流式操作和分组聚合来实现。具体代码如下:

Map<String, Double> unitQuantityMap = realDiff.stream()
    .collect(Collectors.groupingBy(OdsMaterialbomItem::getUnit, 
             Collectors.summingDouble(OdsMaterialbomItem::getQuantity)));

上面的代码中,首先使用stream()方法将realDiff转换成流,然后使用groupingBy()方法按照unit字段进行分组,最后使用summingDouble()方法将相同unitquantity相加,得到一个以unit为键,相同unitquantity总和为值的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对象

java 8将字段unit相同的行上的quantity相加ListOdsMaterialbomItem realDiff

原文地址: https://www.cveoy.top/t/topic/hqZF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录