gpt4 book ai didi

Java 8 按小时对对象进行分组

转载 作者:行者123 更新时间:2023-12-01 19:39:27 27 4
gpt4 key购买 nike

我有一个以这种方式创建的对象列表:

public class Object{
private Date date;
private double value;

//getters and setters
}

我只需要获取每小时频率的对象。

我的想法是以这种方式使用 Java8 流和 groupingBy 函数

Map<Integer, List<Object>> map = objects()
.collect(Collectors.groupingBy(x -> x.getDate().get(ChronoField.HOUR_OF_DAY)));

但通过这种方式,即使我的列表中有多天,我也只需要 24 个元素(一天中每小时一个)。如何按天/小时分组?

最佳答案

我强烈建议您在此处使用 LocalDateTime 而不是 Date

基本上,您不想按小时数字进行分组。数字。您想将每个不同的时间放在不同的组中,对吧?这意味着按年、月、日和小时进行分组。

实现此目的的一种方法是按仅到小时的格式化日期进行分组:

.collect(Collectors.groupingBy(x -> DateTimeFormatter.ofPattern("yyyyMMddHH").format(x));

或者,使用 truncatedTo 将每个日期截断为小时:

.collect(Collectors.groupingBy(x -> x.truncatedTo(ChronoUnit.HOURS));

关于Java 8 按小时对对象进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55813100/

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