使用Java使用startTIme和endTime对LocalDateTime对象进行分组

问题描述

我想实现一种分组算法,以将此列表分为分钟间隔。

示例列表:

List<Item> items = Arrays.asList(
    new Item(LocalDateTime.parse("2020-08-21T00:00:00"),LocalDateTime.parse("2020-08-21T00:02:00"),"item1"),new Item(LocalDateTime.parse("2020-08-21T00:01:00"),LocalDateTime.parse("2020-08-21T00:03:00"),"item2"),new Item(LocalDateTime.parse("2020-08-21T00:03:00"),LocalDateTime.parse("2020-08-21T00:07:00"),"item3"),new Item(LocalDateTime.parse("2020-08-21T00:08:00"),LocalDateTime.parse("2020-08-21T00:12:00"),"item4"),new Item(LocalDateTime.parse("2020-08-21T09:50:37"),LocalDateTime.parse("2020-08-21T09:56:49"),"item5"),new Item(LocalDateTime.parse("2020-08-21T09:59:37"),LocalDateTime.parse("2020-08-21T10:02:37"),"item6"),new Item(LocalDateTime.parse("2020-08-21T09:49:37"),LocalDateTime.parse("2020-08-21T09:51:37"),"item7"),new Item(LocalDateTime.parse("2019-12-31T23:59:37"),LocalDateTime.parse("2020-01-01T00:03:37"),"item8"),new Item(LocalDateTime.parse("2020-01-01T00:04:37"),LocalDateTime.parse("2020-01-01T00:06:37"),"item9")
);

物品类别:

class Item {
    LocalDateTime startTime;
    LocalDateTime endTime;
    String name;

    // constructor etc
}

为简单起见,我仅提及分钟,但日期也很重要。给定间隔为5分钟,00:00 - 00:02可以分为范围00:00 - 00:05的组,而00:03 - 00:07可以分为两组00:00 - 00:0500:05 - 00:10。 / p>

上述示例列表的所需输出(仅出于可读性输出而省略的名称应包含整个Item对象):

{
    [item1,item2,item3],[item3,item4],[item5,item6],[item7,item5],[item8,item9]
}

是否可以使用Collectors#groupingBy之类的方法进行分组?

编辑 *为了避免出现负面评论,我在答案中添加了“无效”解决方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)