gpt4 book ai didi

java - 使用 Lambda 将列表分组并汇总到 map 中

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:58 25 4
gpt4 key购买 nike

我有一个 MoveTrack 的列表我想按月分组并计算数据并将数据存储在 Map<String, Double> 中的对象.我正在尝试学习 Lambda 并对其进行试验,因此尝试使用 Lambda 完成这项任务。

class MoveTrack {
private Date time;
private Double movementAmount;

//getters and setters
}

// in my main method
List<MoveTrack> mveTracking = new ArrayList<>();
Map<String, Double> movMap = new HashMap<>();

所以我希望能够对 moveTracking 进行分组列出值并将其求和到 movMap 中,每个 Map Key = Month Name(January、February 等)和相应的 Value 移动量,即该月的双倍总和。

最佳答案

Collectors.groupingBy允许您将列表缩减为映射,其中键是对列表元素的某种操作,值是应用于元素操作的某种聚合函数。在你的情况下,你可以使用这样的东西:

SimpleDateFormat monthFormatter = new SimpleDateFormat("MMM");
Map<String, Double> moveMap =
moveTracking.stream()
.collect(Collectors.groupingBy
(m -> monthFormatter.format(m.getTime()),
Collectors.summingDouble(MoveTrack::getMovementAmount)));

关于java - 使用 Lambda 将列表分组并汇总到 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35533675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com