java - 根据日期(每小时)对对象进行分组列表

标签 java arraylist java-8

我有一个对象列表,其中java.util.date作为字段之一。如何根据日期(每小时)分离/过滤对象。例如:日期范围从 12:00 到 13:00 的对象应该每小时分开或形成一个新列表,依此类推。帮助我实现这一目标。

最佳答案

您可以流式传输原始对象列表,然后使用groupingBy集电极。

这将为您提供一个Map,其中键是小时,值是该小时的对象列表。

List<MyObject> objects = new ArrayList<>();

Map<Integer, List<MyObject>> objectsPerHour = objects.stream()
        .collect(Collectors.groupingBy(MyObject::getHour));

我假设 MyObject 的实现如下(您可以像您想要的那样实现 getHour()):

class MyObject {

    private Date date;

    public int getHour() {
        return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).getHour();
    }
}

关于java - 根据日期(每小时)对对象进行分组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48162938/

相关文章:

java - 需要对特定字段的 ArrayList<Object> 进行排序?

java - 无法从 Java 中的 COM 端口读取串行数据

Java8 泛型拼图

java - 错误: Could not find or load main class

java - volatile 与非 volatile

java - 由数组中分解的数字组成的字符串

java - 如何在不编辑以前版本的情况下编辑ArrayList?

java - 如何使用 bundle 将多维数组列表传递给另一个 Activity

java - TimeZone.getTimeZone ("PST") 与 TimeZone.getTimeZone ("America/Los_Angeles")

java - 即使没有选中子项,RadioGroup.getCheckedRadioButtonId() 也不会返回 -1