我有一个LocalDateTime列表。我想将列表分为多个子列表,其中一天之内可以有不同的元素。例如,列表可以是:
[ 2014-04-29T00:00:00,
2014-04-29T10:00:00,
2014-04-29T20:00:00,
2014-04-30T00:00:00,
2014-04-30T09:00:00,
2014-04-30T19:00:00
]
将它们拆分为一天的时间时,将拆分为3个子列表。每个列表的LocalDateTime元素不得超过24小时。我该如何使用stream groupingBy
?
[ 2014-04-29T00:00:00,
2014-04-29T10:00:00,
2014-04-29T20:00:00]
[2014-04-29T10:00:00,
2014-04-29T20:00:00,
2014-04-30T00:00:00,
2014-04-30T09:00:00
]
[2014-04-29T20:00:00,
2014-04-30T00:00:00,
2014-04-30T09:00:00,
2014-04-30T19:00:00
]
答案 0 :(得分:0)
您可以构建地图作为中间步骤:
Map<LocalDateTime, List<LocalDateTime>> groupedDates = dates.stream().collect(Collectors.groupingBy(date -> date));
在这一点上,唯一的区别是您将通过一个附加级别的键来映射子列表,这将是子列表中包含的日期,但是您可以通过迭代映射和构造一个列表列表。