当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《按间隔对Java8日期进行分组》经验,为你挑选了1个好方法。

使用Java 8 java.time框架,如何将日期分组为间隔?例如,每隔10分钟作为一个间隔,并给出一个列表LocalTime

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)在第二个时间间隔内.



1> user140547..:

使用Java 8时间API,可以非常方便地完成:

Map> map = 
     list.stream()
          .collect(Collectors.
                 groupingBy(x -> x.get(ChronoField.MINUTE_OF_DAY) / 10)
                  );

此示例将使用a LocalTime并以10分钟为一组对您的帖子进行分组.

注意:这最初是Java 8复杂自定义收集器的答案,但由于它没有解决OP问题,并得到一些upvotes,我删除了它并为它写了一个问题.根据JodaStephen的评论改变了通话顺序


舍入的首选方式是`x.getTime().get(ChronoField.MINUTE_OF_DAY)`,因为它读得更好并且与第三方`TemporalAccessor`实现稍微好一点.
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有