J'ai un Iterable<Student> studentList
qui contient des objets étudiants avec les champs id, event_date et bien d'autres.
Iterable<Student> myStudentList (contains student objects);
Maintenant, cette liste d'étudiants contient plusieurs objets pour un seul identifiant d'étudiant. Supposons que je doive modifier cette liste de manière à ce qu'elle ne contienne qu'un petit nombre d'objets étudiants (un par identifiant d'étudiant et cet objet étudiant doit contenir la date maximale de l'événement pour tous les objets étudiants de son identifiant). Comment puis-je faire cela efficacement ?
Par exemple. Actuellement, la liste contient les éléments suivants
ListIndex | Student ID | Student Name | Student Event Date |
0 RV001 Mahesh 1328532774000
1 RV002 James 1328532774000
2 RV002 James 1454763174000
3 RV002 James 1549457671000
4 RV001 Mahesh 1549457671000
5 RV003 Andy 1454763174000
Résultat attendu
Et maintenant mon résultat Iterable<Student>
La liste devrait contenir le résultat suivant
ListIndex | Student ID | Student Name | Student Event Date |
0 RV001 Mahesh 1549457671000
1 RV002 James 1549457671000
2 RV003 Andy 1454763174000
Comment puis-je réaliser cela efficacement en utilisant Java 8 ?
Ces données proviennent d'une table qui est partitionnée par event_date.
Mon approche actuelle à laquelle je peux penser :-P
Step 1 - Create a HashMap<Student_id, List<Student>>
Step 2 - Create a final List<Student> finalList for result purpose.
Step 2 - Iterate through the List<Student>
(a) For each student_id , store the list of Student objects in the
Map
-- END of Iterating List<Student>
Step 3 - Iterate Each Map Entry in HashMap
(a) For every key , Apply Comparator on List<Student> for
current student id.
(b) Get the first object of List<Student> in map for current
student_id and add it to the final list
Faites-moi savoir si vous avez de meilleures approches.