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());