我试图找到一种按天,周或年对元素流进行分组的方法。
我有这个实体:
element {
id
date(ZonedDateTime)
}
所以也许我可以做这样的事情:
elemets.stream()
.collect(Collectors.groupingBy(t -> t.getDate().with(TemporalAdjusters.ofDateAdjuster('group by day, week or month')));
这可能吗?
谢谢。
答案 0 :(得分:4)
我不能完全确定这是您所需要的,但似乎是一种将要分组的值作为依据的方法:
private static Map<Integer, List<Element>> group(
Collection<Element> elements,
ChronoField chronoField) {
return elements.stream().collect(Collectors.groupingBy(
x -> x.getDateTime().get(chronoField)));
}
例如通过以下方式调用它:
group(elements, ChronoField.DAY_OF_WEEK);
group(elements, ChronoField.ALIGNED_WEEK_OF_YEAR);
group(elements, ChronoField.YEAR);