Найти в Дзене
DEBAGanov

Java 559. Имея список студентов, напишите код Java 8, чтобы разделить студентов, набравших более 60%, от тех, кто этого не сделал?

Предположим, что у нас есть класс Student, который содержит поля name и score. Для того чтобы разделить студентов по достижению более 60% от максимального балла, можно использовать метод partitioningBy() из класса Collectors.

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static java.util.stream.Collectors.partitioningBy;

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)
);

Map<Boolean, List<Student>> passingFailing =
students.stream()
.collect(partitioningBy(s -> s.getScore() >= 60));

List<Student> passingStudents = passingFailing.get(true);
List<Student> failingStudents = passingFailing.get(false);

System.out.println("Passing Students:");
passingStudents.forEach(s -> System.out.println(s.getName()));
System.out.println("\nFailing Students:");
failingStudents.forEach(s -> System.out.println(s.getName()));
}
}

В этом примере мы создаем список students, содержащий объекты класса Student, заполняем его данными и затем используем метод partitioningBy() для разделения студентов на две группы: тех, кто набрал 60% и больше, и тех, кто этого не сделал. Результатом является карта, где ключами являются значения типа Boolean (true или false), а значениями являются списки студентов.

Затем мы получаем каждый список отдельно и выводим их имена в консоль.

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

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

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