package com.example; import java.io.IOException; import java.nio.file.Path; import java.time.Year; import java.util.Comparator; import java.util.List; public class App { public static void main(String[] args) { try { Path studentsJsonFile = Path.of("students.json"); List students = StudentReader.read(studentsJsonFile); // Условие использования одного stream сохраняется students.stream() // Вывести в консоль каждого студента (переопределите toString) .peek(System.out::println) // Получить для каждого студента список книг .map(s -> s.getBooks()) // Stream> // Получить книги .flatMap(List::stream) // Stream; // Oтсортировать книги по количеству страниц (Не забывайте про условия для сравнения // объектов) .sorted(Comparator.comparingInt(Book::getPageCount)) // Оставить только уникальные книги .distinct() // Отфильтровать книги, оставив только те, которые были выпущены после 2000 года .filter(b -> b.getPublishYear().isAfter(Year.of(2000))) // Ограничить стрим на 3 элементах .limit(3) // Получить из книг годы выпуска .map(Book::getPublishYear) // При помощи методов короткого замыкания (почитайте самостоятельно что это такое) вернуть // Optional от года .findFirst() // При помощи методов получения значения из Optional вывести в консоль год выпуска // найденной книги, либо запись о том, что такая книга отсутствует .ifPresentOrElse( year -> System.out.println("Год выпуска: " + year), () -> System.out.println("Подходящая книга отсутствует")); } catch (IOException e) { System.err.println("Сударь, вы передали неправильный файл!"); e.printStackTrace(); System.exit(1); } catch (Exception e) { System.err.println("Ну тут мои полномочии всё!"); e.printStackTrace(); System.exit(1); } System.out.println("Выполнение программы завершено"); } }