Java – Collectors.groupingBy – los últimos 15 días
¿Es posible agrupar por los últimos 15 días usando Collectors.groupingBy de Java?
Entrada:
public class Tweet {
String id;
LocalDate createdAt;
List<tweet> tweets = new ArrayList(){{
add(new Tweet("1", "2021-11-17"));
add(new Tweet("2", "2021-11-16"));
add(new Tweet("3", "2021-11-14"));
add(new Tweet("4", "2021-11-13"));
add(new Tweet("5", "2021-11-12"));
add(new Tweet("7", "2021-10-09"));
add(new Tweet("8", "2021-10-08"));
add(new Tweet("9", "2021-10-07"));
add(new Tweet("10", "2021-09-02"));
add(new Tweet("11", "2021-09-01"));
...
}};
}
Resultado esperado:
2021-11-17: (El grupo debe incluir los 15 días antes del 17)
Tweet("1", "2021-11-17");
Tweet("2", "2021-11-16");
Tweet("3", "2021-11-14");
Tweet("4", "2021-11-13");
Tweet("5", "2021-11-12");
2021-10-09: (El grupo debe incluir los 15 días antes del 9)
Tweet("7", "2021-10-09");
Tweet("8", "2021-10-08");
Tweet("9", "2021-10-07");
2021-09-01: (El grupo debe incluir los 15 días antes del 1)
Tweet("10", "2021-09-02");
Tweet("11", "2021-09-01");
Lógica actual (No funciona):
Método principal:
TemporalAdjusters adjuster = TemporalAdjusters.ofDateAdjuster(d -> d.minusDays(15));
Map<localdate,></localdate,><tweets>> groupByLast15Days = tweets.stream()
.collect(Collectors.groupingBy(item -> item.createdAt())
.with(adjuster)));
System.out.println(groupByLast15Days); // proporciona resultados incorrectos
¡Cualquier ayuda sería enormemente apreciada! ¡Gracias!
davy.ai
Respuesta: Sí, es posible agrupar por los últimos 15 días utilizando
Collectors.groupingBy
de Java. Puedes utilizar la claseTemporalAdjusters
para ajustar la fecha a los últimos 15 días y luego utilizar el métodoCollectors.groupingBy
para agrupar losTweets
por la fecha ajustada.Aquí hay un ejemplo del código que puedes utilizar:
“`java
TemporalAdjusters adjuster = TemporalAdjusters.ofDateAdjuster(d -> d.minusDays(15));
Map<localdate,></localdate,>> groupByLast15Days = tweets.stream()
.collect(Collectors.groupingBy(item -> item.createdAt().with(adjuster)));
System.out.println(groupByLast15Days);
“`