Получите наивысшее значение с помощью java stream group by
Я хотел бы получить самую высокую оценку группы по идентификатору .Если два самых высоких балла одинаковы, то я хотел бы получить самый высокий балл на основе самого низкого необязательного идентификатора.
Я хотел бы получить его в потоке Java.Пока что у меня код работает.Есть ли какой-нибудь эффективный способ переписать этот код в потоке java
Пример :
список массивов:
ID: 1 Оценка:80 OptionalId:1
ID: 1 Оценка:90 OptionalId:2
ID: 1 Оценка:90 OptionalId:3
ID: 2 Оценка:80 OptionalId:1
ID: 2 Оценка:100 OptionalId:3
ID: 2 Оценка:100 OptionalId:5
Результат должен быть таким
ID: 1 Оценка 90 OptionalId:2
ID 2 Оценка 100 OptionalId:3
Что я уже пробовал:
records=record.Person(batchNumber); List<Person> highestRecords = new ArrayList<>();for( Person s:records) { if(!highestRecords.isEmpty()) { boolean contains = false; for(Person ns: new ArrayList<>(highestRecords)) { if(s.Id().compareTo(ns.Id()) == 0) { contains = true; if(s.getScore.compareTo(ns.getScore()) > 0 && s.optionalId().compareTo(ns.optionalId()) < 0) { highestRecords.remove(ns); highestRecords.add(s) } } } if(contains == false) { highestRecords.add(s); } }else { highestRecords.add(s); } } }