Задать вопрос
@FDmitriyA
Учусь программированию на Java

В задании с помощью Stream API, нужно найти сотрудника с максимальной зарплатой среди тех, кто пришёл в 2017 году?

Добрый день!
В задании есть текстовый (txt) список сотрудников, в формате (Фамилия, Имя, размер зарплаты в цифрах (78000) и дата поступления этого сотрудника на работу в формате (11.11.2018)).
Есть класс сотрудники "Employee" в этом классе прописаны строки:
private String name;//имя
private Integer salary;//зарплата
private Date workStart;//начало работы
а так же гетеры и сеттеры к этим параметрам.
Список сотрудников заносим в ArrayList:
ArrayList staff = loadStaffFromFile();
Из этого списка нужно найти сотрудника с максимальной зарплатой среди тех, кто пришёл в 2017 году? Используя Stream API в одну строку. Я не знаю как отфильтровать сотрудников по 2017 году? Подскажите пожалуйста.
Вот начало моего Stream:
staff.stream().sorted(Comparator.comparing(Employee::getWorkStart)).filter(Вот тут должен быть фильтр поиска по 2017 году. Как это реализовать?).forEach(System.out::println);
  • Вопрос задан
  • 2275 просмотров
Подписаться Простой 6 комментариев
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@whereissidekillah
1)
staff.stream().filter(e -> e.getWorkStart().getYear() == 117).max(Comparator.comparing(Employee::getSalary)).ifPresent(System.out::println);

2)
Calendar calendar = Calendar.getInstance();
calendar.set(2017, Calendar.JANUARY, 1);

Calendar calendar1 = Calendar.getInstance();
calendar1.set(2017, Calendar.DECEMBER, 31);

staff.stream().filter(e -> e.getWorkStart().after(calendar.getTime()) && e.getWorkStart().before(calendar1.getTime())).max(Comparator.comparing(Employee::getSalary)).ifPresent(System.out::println);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы