¿Cómo encontrar la última información dada por cada usuario de la lista de evaluaciones en menos pedido?

PK:

miradas de retroalimentación como este:

    public FeedbackTable(String clusterKey, Date eventStartTime, String user, Date feedbackReceivedTime, int feedback)
    {
        this.id=clusterKey;
        this.user=user;
        this.feedback=feedback;
        this.feedbackReceivedTime=feedbackReceivedTime;
        this.eventStartTime = eventStartTime;
    }

Puedo obtener una lista de estas evaluaciones y quiero una lista de evaluaciones que tiene sólo el último feedbackReceivedTime para cada usuario.

Puedo repetir la lista de votaciones y encontrar usuarios únicos y luego para cada usuario iterar sobre la lista de retroalimentación para obtener las últimas votaciones pero no es menos orden.

Pavel Smirnov:

Aquí está una manera de cómo hacerlo utilizando la API de secuencia:

List<FeedbackTable> feedbacks = ...; // your list of feedbacks

List<FeedbackTable> latestUsersFeedbacks
          = feedbacks.stream()
                     .collect(Collectors.toMap(f -> f.user, 
                                               f -> f, 
                                              (f1, f2) -> f1.feedbackReceivedTime.after(f2.feedbackReceivedTime) ? f1 : f2))
                     .values().stream().collect(Collectors.toList());

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=233605&siteId=1
Recomendado
Clasificación