当前位置: 首页 > 知识库问答 >
问题:

Java8 groupBy并减少未对列中的值求和

濮阳旺
2023-03-14

我试图使用Java8 groupby和reduce特性来根据分组对元素求和,但代码似乎不适合我。

我的要求是,对于每一个DTO对象,我希望这个公里数根据卡车车组进行汇总。因此,突出显示的列应该是同一个TruckId(**Contract flotte)的值的总和

这是我的DTO:

"'公共类CostsTruckWsDTO实现可序列化{

private static final long serialVersionUID = 1L;

private String truckId;

private LocalDate period;

private Bigdecimal KilometersNumber;

private String periodStartDate;

以下是逻辑:''costsTruckWsDTO。setGroupBy(TruckId.toUpperCase());

地图

        BigDecimal totalKm = entry.getValue().stream().map(x -> x.getKilometersNumber()).reduce(BigDecimal.ZERO,
                BigDecimal::add);

} }''

但我得到的是Kymere的价值,而不是根据屏幕截图添加的geeting。谁能帮我一下我在这里错过了什么!!!高度赞赏

共有1个答案

路裕
2023-03-14

您可以使用两个采集器进行分组操作和求和操作:

Map<String, BigDecimal> result = trucks.stream()
               .collect(Collectors.groupingBy(CostsTruckWsDTO::getTruckId, 
                      Collectors.mapping(CostsTruckWsDTO::getKilometersNumber, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
 类似资料:
  • 我使用useReducer保存一些状态,如下面的代码所示,但它没有从array reducer函数返回值。 过程: 当我单击屏幕上的按钮时,它会从数据库中获取信息 该信息存储在batchEntries变量中 当批次条目发生更改时,我使用useEffect由雇主触发DispatchEntries 这会导致减速器运行 我知道内部减少函数会运行,因为如果我把它包装在控制台日志中,它会将我期望的数据输出到

  • 我的数据: 预期Arr: 我的代码是通过删除重复的来简化模型: 但是我不能和s。 我怎么能做到呢?

  • 这里和这里都有类似的问题,但对JVM参数的更改都没有让我找到相同的解决方案。我只是想减少JVM未使用的堆大小,以便它更接近实际使用情况(将其释放给操作系统)。我一直在使用YourKit来分析内存使用情况,它通常如下所示: 我正在运行智能Ij IDEA社区版64位,在Windows 7 64位,8 GB RAM上运行。我已经编辑了.文件在这里找到: 与上述链接中提到的建议。第一个链接的答案实际上是错

  • 我的MySQL中有一个InnoDB表,它存储产品的当前库存,每当产品售出时(总是按单位,即总是-1),库存就必须更新,比如说: 现在,我正在使用Hibernate,因此我通过将currentStock属性的值设置为“currentValue -1”来更新对象ProductStock,如下所示: 现在,我正在使用事务来提交更改,但是我不确定当同时进行多次销售时Hibernate会做什么,并且我无法成

  • 问题内容: 我正在运行的代码将创建包含多个用户定义类的大对象,然后必须对其进行序列化以供以后使用。据我所知,只有酸洗才能满足我的需求。我一直在使用cPickle来存储它们,但是它生成的对象大约是40G,来自运行在500 mb内存中的代码。序列化的速度不是问题,但是对象的大小是问题。我可以使用任何技巧或替代方法来使泡菜变小吗? 问题答案: 如果您必须使用pickle并且没有其他序列化方法对您有用,那