按间隔对Java 8日期进行分组

问题描述 投票:3回答:1

使用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)应位于第二区间。

java java-8 java-stream java-time
1个回答
7
投票

使用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的评论改变了通话顺序

© www.soinside.com 2019 - 2024. All rights reserved.