Найти тему
DEBAGanov

Java 563. Учитывая список студентов, напишите код Java 8, чтобы получить самый высокий, самый низкий и средний процент студентов?

Предположим, что у нас есть класс Student, который содержит поля name и score. Для того чтобы получить самый высокий, самый низкий и средний процент студентов, можно использовать методы max(), min() и average() в сочетании с методом mapToInt().

import java.util.Arrays;
import java.util.List;

public class Student {
private String name;
private int score;

public Student(String name, int score) {
this.name = name;
this.score = score;
}

public String getName() {
return name;
}

public int getScore() {
return score;
}
}

public class Main {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 70),
new Student("Bob", 50),
new Student("Charlie", 80),
new Student("David", 65),
new Student("Eva", 90),
new Student("Frank", 75)
);

double highestPercentage =
students.stream()
.mapToInt(s -> s.getScore())
.max()
.getAsInt() * 1.0 / 100;

double lowestPercentage =
students.stream()
.mapToInt(s -> s.getScore())
.min()
.getAsInt() * 1.0 / 100;

double averagePercentage =
students.stream()
.mapToInt(s -> s.getScore())
.average()
.getAsDouble() * 1.0 / 100;

System.out.println("Highest percentage: " + highestPercentage);
System.out.println("Lowest percentage: " + lowestPercentage);
System.out.println("Average percentage: " + averagePercentage);
}
}

В этом примере мы создаем список students, содержащий объекты класса Student, заполняем его данными и затем используем методы max(), min() и average() для нахождения самого высокого, самого низкого и среднего процента учеников соответственно. Для того чтобы передать значения в процентах, мы делим полученные значения на 100.

Затем мы выводим каждый результат в консоль. Обратите внимание, что если в списке students нет ни одного элемента, который изначально приведет к пустому потоку, то вызовы getAsInt() и getAsDouble() будут бросать исключение.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov