我有一个以下格式的列表,我想把这个列表按分钟间隔分组。
List<Item> myObjList = Arrays.asList(
new Item(LocalDateTime.parse("2020-09-22T00:13:36")),
new Item(LocalDateTime.parse("2020-09-22T00:17:20")),
new Item(LocalDateTime.parse("2020-09-22T01:25:20")),
new Item(LocalDateTime.parse("2020-09-18T00:17:20")),
new Item(LocalDateTime.parse("2020-09-19T00:17:20")));
例如,给定10分钟的间隔,列表的前两个对象应该在同一组中,第三个对象应该在不同的组中,等等。
是否可以使用java的8 groupingBy
功能?
我的解决方案是将列表中的每个日期与列表中的所有其他日期进行比较,并将不同的日期x分钟添加到新列表中。这似乎是非常缓慢和'黑客'的解决办法,我想知道是否有一个更稳定的解决方案。
2条答案
按热度按时间hmmo2u0o1#
可以使用
Collectors#groupingBy
到组LocalDateTime
对象以10分钟的间隔排列成列表。您必须修改此片段以与您的Item
类,但逻辑是一样的。输出
sdnqo3pr2#
您没有指定组的键,所以我只使用
(minutes/10)*10
以获取标记到时间上的分钟范围的开始时间,将时间截断为小时。印刷品
这是我上过的课。