es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Respuesta: Sí, es posible agrupar por los últimos 15 días utilizando Collectors.groupingBy de Java. Puedes utilizar la clase TemporalAdjusters para ajustar la fecha a los últimos 15 días y luego utilizar el método Collectors.groupingBy para agrupar los Tweets 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);
    “`

Comments are closed.