【发布时间】:2021-11-16 15:14:25
【问题描述】:
我有这样的情况:
List<ObjectA> collapsed = list.stream().collect(Collectors.collectingAndThen(
Collectors.groupingBy(
ObjectA::getDate,
Collectors.maxBy(Comparator
.comparing(ObjectA::getPriority1)
.thenComparing(ObjectA::getPriority2)
.thenComparing(ObjectA::getDate)
.thenComparing(ObjectA::getId))),
map -> map.values().stream()
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList())));
它在相同的日期完美运行。 我只需要为某个日期窗口分组项目:
Integer daysWindow = 90;
所以我希望在这个窗口中的日期发生一切。 这怎么可能?
谢谢大家!
【问题讨论】:
-
按年份 (*4+) 分组,然后按年份 / 90 或(月数 - 1)/ 3 分组。
标签: java java-stream grouping