Sobes.tech
Назад к вопросам
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 имен студентов с наивысшим средним баллом по всем предметам.