Назад к вопросам
Иннотех
Middle+
5
class ExamResult { String studentName; int subjectId; int mark; //1,2,3,4,5 } List<String> getTop5Students(List<ExamResult> list) { }
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для получения топ-5 студентов по среднему баллу нужно сгруппировать результаты по имени студента, вычислить средний балл для каждого, отсортировать по убыванию и взять первые пять.
Пример на Java с использованием Stream API:
import java.util.*;
import java.util.stream.*;
class ExamResult {
String studentName;
int subjectId;
int mark; //1,2,3,4,5
public ExamResult(String studentName, int subjectId, int mark) {
this.studentName = studentName;
this.subjectId = subjectId;
this.mark = mark;
}
}
List<String> getTop5Students(List<ExamResult> list) {
return list.stream()
.collect(Collectors.groupingBy(er -> er.studentName, Collectors.averagingInt(er -> er.mark)))
.entrySet().stream()
.sorted(Map.Entry.<String, Double>comparingByValue(Comparator.reverseOrder()))
.limit(5)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
Этот метод возвращает список из 5 имен студентов с наивысшим средним баллом по всем предметам.