У меня есть Iterable<Student> studentList
, который содержит студенческие объекты с полями id, event_date и многими другими.
Iterable<Student> myStudentList (contains student objects);
Теперь этот список студентов содержит множество объектов для одного идентификатора студента.Допустим, мне нужно изменить этот список учеников так, чтобы он содержал только несколько объектов учеников (по одному на один идентификатор ученика, и этот объект ученика должен содержать максимальное значение event_date для всех объектов ученика для его student_id).Как мне сделать это эффективно?
Например.В настоящее время список содержит следующие элементы:
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
Ожидаемый результат
И теперь мой результат Iterable<Student>
список должен содержать ниже как результат
ListIndex | Student ID | Student Name | Student Event Date |
0 RV001 Mahesh 1549457671000
1 RV002 James 1549457671000
2 RV003 Andy 1454763174000
Как мне добиться этого эффективно, используя Java 8?
Эти данные поступают из таблицы, которая разделена на event_date
Мой подход в настоящее время, о котором я могу думать:-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
Дайте мне знать, если у вас есть лучшие подходы.