Java 基于日期在hashmap中聚合数据

Java 基于日期在hashmap中聚合数据,java,angular,spring,jpa,Java,Angular,Spring,Jpa,我的Spring boot后端管理应用程序和游戏。 我有评级对象,在这个评级对象中,并将评级历史保存在HashMap中 // Number of history by day @ElementCollection(fetch = FetchType.EAGER) private Map<String, Integer> ratingHistory = new HashMap<>(); 这个json将增长 我想显示一个图表,显示以下各项评级的演变: 本周:我将返回hash

我的Spring boot后端管理应用程序和游戏。 我有评级对象,在这个评级对象中,并将评级历史保存在HashMap中

// Number of history by day
@ElementCollection(fetch = FetchType.EAGER)
private Map<String, Integer> ratingHistory = new HashMap<>();
这个json将增长

我想显示一个图表,显示以下各项评级的演变: 本周:我将返回hashmap中的最后7个数据

当我想显示以下内容时,如何聚合并返回已处理的数据:

  • 最近30天的评级变化(我想展示第1周(本周所有天数的总和)、第2周、第3周、第4周)
  • 最近3个月(5月(本月所有天数之和)、6月、7月)
  • 从应用程序的开始
我不知道如何正确处理它。
谢谢

假设您使用的是Java 8+,您应该将
映射
更改为a,实际上它将是a

这确保了键是可排序的,允许您调用,这将有助于地图变得非常大

此外,使用可以更容易地通过以下方式进行分组:

  • 周:
    WeekFields.of(Locale.US)
    ,以及两种方法和方法

  • 月份:


至于如何使用Java 8+流进行实际聚合,web上有很多这样的示例,使用
collect(collector.groupingBy(…)
,例如..

假设您使用的是Java 8+,您应该将
映射
更改为a,实际上这将是一个

这确保了键是可排序的,允许您调用,这将有助于地图变得非常大

此外,使用可以更容易地通过以下方式进行分组:

  • 周:
    WeekFields.of(Locale.US)
    ,以及两种方法和方法

  • 月份:


至于如何使用Java 8+流进行实际聚合,web上有很多这样的示例,使用
collect(collector.groupingBy(…)
,例如..

非常感谢。我使用java 8,我将更改为localDate,并再次尝试它。我使用Java8,我将更改为localDate并重试
"ratingHistory": {
  "07/01/2020": 12,
  "07/02/2020": 5,
  "07/03/2020": 0
}