Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按时间间隔分组Java8日期_Java_Java 8_Java Stream_Java Time - Fatal编程技术网

按时间间隔分组Java8日期

按时间间隔分组Java8日期,java,java-8,java-stream,java-time,Java,Java 8,Java Stream,Java Time,使用Java8java.time框架,如何将日期分组为时间间隔? 例如,每隔10分钟作为一个间隔,并列出给定的 List 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 8时间API,这可以非常方便地完成:

使用Java8java.time框架,如何将日期分组为时间间隔? 例如,每隔10分钟作为一个间隔,并列出给定的

List 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 8时间API,这可以非常方便地完成:

Map<Integer, List<LocalTime>> map = 
     list.stream()
          .collect(Collectors.
                 groupingBy(x -> x.get(ChronoField.MINUTE_OF_DAY) / 10)
                  );
Map=
list.stream()
收藏(收藏家)。
分组方式(x->x.get(ChronoField.Minutes\u OF\u DAY)/10)
);
本例将使用一个组,将您的帖子分组为10分钟


注意:这本来是对的一个回答,但由于它并没有解决老年退休金问题,并且获得了一些投票,我删除了它并为它写了一个问题。根据JodaStephen的评论更改了调用顺序

首选方法是
x.getTime().get(ChronoField.MINUTE\u of\u DAY)
,因为它的可读性更好,并且与第三方
TemporalAccessor
实现的配合也更好。如果您想使用原始的localtime,但仍按其子集排序,您需要做什么?因此,您的映射看起来像@axl:我不确定您的输入/输出是什么,但也许您可以问一个新问题,并对您的问题进行更详细的描述。@user140547,例如,如果您想按本地(日期)时间的子集(例如月、日、小时、分钟、秒)排序,但由于get返回整数,你必须映射整数。我的问题是如何保持本地(日期)时间,但分组正确。所以,如果你有一个时间列表,你想按小时分组,而不是让整数从0到23,那么本地时间应该从0到23。。。我想您必须为返回带有该信息的localtime的对象创建一个额外的get方法?这是一个完美的答案,但是如果我有LocalDateTime,并且我想按分钟分组呢