使用Java 8 java.time框架,如何将日期分组为间隔?
例如,每隔10分钟作为一个间隔,以及给定LocalTime
List<LocalTime> list = Arrays.asList(LocalTime.of(0,9),LocalTime.of(0,11),LocalTime.of(0,19));
如果以10分钟的间隔进行分组,则LocalTime.of(0,9)
应位于第一组,但LocalTime.of(0,11),LocalTime.of(0,19)
应位于第二个区间。
答案 0 :(得分:5)
使用Java 8时间API,可以非常方便地完成:
Map<Integer, List<LocalTime>> map =
list.stream()
.collect(Collectors.
groupingBy(x -> x.get(ChronoField.MINUTE_OF_DAY) / 10)
);
此示例将使用LocalTime
并将您的帖子分组为10分钟。
注意:这最初是Java 8 complex custom collector的答案,但由于它没有解决OP问题,并得到了一些赞成,我删除了它并为它写了一个问题。根据JodaStephen的评论改变了呼叫顺序