/
itokar98
/
HomeWorkCoreStreamApiTask2
Обзор
Документация
Войти
/
itokar98
/
HomeWorkCoreStreamApiTask2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Main.java
53 строки
3 KB
Ilya Tokar
First commit
08 окт 2025, 08:15
08 окт 2025, 08:15
44d0ca7
Код
Авторство
О чём код?
import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { // Генерация данных List<String> names = Arrays.asList("Jack", "Connor", "Harry", "George", "Samuel", "John"); List<String> families = Arrays.asList("Evans", "Young", "Harris", "Wilson", "Davies", "Adamson", "Brown"); Collection<Person> persons = new ArrayList<>(); for (int i = 0; i < 10_000_000; i++) { persons.add(new Person( names.get(new Random().nextInt(names.size())), families.get(new Random().nextInt(families.size())), new Random().nextInt(100), Sex.values()[new Random().nextInt(Sex.values().length)], Education.values()[new Random().nextInt(Education.values().length)]) ); } // 1. Найти количество несовершеннолетних (люди младше 18 лет) long underageCount = persons.stream() .filter(person -> person.getAge() < 18) .count(); System.out.println("Количество несовершеннолетних: " + underageCount); // 2. Получить список фамилий призывников (мужчины от 18 до 27 лет) List<String> conscripts = persons.stream() .filter(person -> person.getSex() == Sex.MAN) .filter(person -> person.getAge() >= 18 && person.getAge() <= 27) .map(Person::getFamily) .collect(Collectors.toList()); System.out.println("Количество призывников: " + conscripts.size()); // 3. Получить отсортированный по фамилии список потенциально работоспособных людей с высшим образованием List<Person> workablePeople = persons.stream() .filter(person -> person.getEducation() == Education.HIGHER) .filter(person -> { if (person.getSex() == Sex.WOMAN) { return person.getAge() >= 18 && person.getAge() <= 60; } else { return person.getAge() >= 18 && person.getAge() <= 65; } }) .sorted(Comparator.comparing(Person::getFamily)) .collect(Collectors.toList()); System.out.println("Количество работоспособных людей с высшим образованием: " + workablePeople.size()); // Вывод первых 10 элементов для демонстрации System.out.println("Первые 10 человек из списка:"); workablePeople.stream().limit(10).forEach(System.out::println); } }