我想从给定的日期列表中找到第一周、第二周、第三周和第四周的日期数
[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
对象的列表,则需要首先将它们转换为一些现代类关于如何做到这一点,有很多问题和答案,快乐的煎熬正如您可能已经意识到的那样,您可以在同一系列流操作中完成它。