我想从给定的日期列表中找到第一周、第二周、第三周和第四周的日期数

[2017-11-22 21:41:39.0, 2017-11-27 23:15:26.0, 2017-11-27 23:26:23.0,
 2017-11-28 19:50:18.0, 2017-11-29 16:14:33.0] are dates

//By Using map
Map<Integer, List<Date>> map;
map = inboxOutboxentityList.stream()
    .collect(Collectors.groupingBy(element ->
         element.getDate().get(weekFields.weekOfWeekBasedYear())
    )
);

最佳答案

如果可以的话,就忘掉那些过时的Date类,用纯java.time解决你的问题你的代码离工作不远了。

    List<LocalDateTime> entities = Arrays.asList(
            LocalDateTime.of(2017, Month.NOVEMBER, 22, 21, 41, 39),
            LocalDateTime.of(2017, Month.NOVEMBER, 27, 23, 15, 26),
            LocalDateTime.of(2017, Month.NOVEMBER, 27, 23, 26, 23),
            LocalDateTime.of(2017, Month.NOVEMBER, 28, 19, 50, 18),
            LocalDateTime.of(2017, Month.NOVEMBER, 29, 16, 14, 33));
    Map<Integer, Long> countPerWeek = entities.stream()
            .collect(Collectors.groupingBy(
                    ldt -> ldt.get(WeekFields.ISO.weekOfWeekBasedYear()),
                    Collectors.counting()));
    System.out.println(countPerWeek);

这张照片:
{48=4, 47=1}

所以第47周的计数是1,第48周的计数是4我相信这是你想要的如果需要,请替换另一个WeekFields对象。
如果要获取Date对象的列表,则需要首先将它们转换为一些现代类关于如何做到这一点,有很多问题和答案,快乐的煎熬正如您可能已经意识到的那样,您可以在同一系列流操作中完成它。

10-07 15:16