Stream API. collect(), Collector, Collectors. Практика

Stream API. collect(), Collector, Collectors. Практика

Дорогу осилит идущий

Сегодняшняя статья, как и обещал, полностью посвящена практике по уроку «Stream API. collect(), Collector, Collectors». С теорией можно ознакомиться здесь: Часть I, Часть II.

Практику предлагаю построить вокруг общей модели данных, чтобы максимально сконцентрироваться на работе со Stream и минимизировать акцент на доменной области.

За основу предлагаю взять классы, описанные в одном из предыдущих уроков (Функциональное программирование в Java) и немного их доработать.

public class Department {
    private String name;
    private List<Employee> employees;
    private int vacancyAmount;
}

public class Employee {
    private String name;
    private boolean isMale;
    private String position;
    private int age;
}

Класс Company не понадобится к рамках текущих заданий, поэтому опустим его.

В рамках реализации задач, добавим этим классам конструкторы, геттеры и сеттеры для облегчения взаимодействия с ними. По мере необходимости можете также переопределить методы Object для этих классов.

 

Общая вводная для всех задач

Представим, что мы пытаемся реализовать набор функций для HRM-системы компании, каждая из которых сводится к формированию определенной статистики на базе информации о всех департаментах компании и сотрудниках в них. Реализация каждой задачи должна представлять собой отдельный метод (или класс), единственным параметром которого является список всех департаментов в компании, а возвращаемым значением – произвольный объект (чаще всего – какая-то коллекция), хранящий информацию, которую требуется получить по условию задачи.

 

Задачи

Задача 1. Предоставьте список всех сотрудников компании.

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

Задача 3. Предоставьте полный перечень оригинальных имен сотрудников по каждому департаменту.
Здесь и далее: допустимо ограничиться обозначением департамента по названию.

Задача 4. Предоставьте список всех департаментов в алфавитном порядке в виде LinkedList.

Задача 5. Предоставьте самого старшего обладателя каждого из имен. Попробуйте сделать это без использования downstream.

Задача 6. Предоставьте информацию о проценте открытых вакансий относительно текущего числа сотрудников по каждому департаменту.

Задача 7. Предоставьте общее число открытых вакансий в компании.

Задача 8. Перечислите названия всех департаментов компании через запятую.

Задача 9. Предоставьте информацию по числу женщин в каждом департаменте.

Задача 10. Предоставьте список сотрудников по каждому имени.

Задача 11. Предоставьте список сотрудников по каждому имени. Имена должны быть представлены в алфавитном порядке.

Задача 12. Предоставьте количество сотрудников старше 50 по каждому департаменту.

Задача 13. Предоставьте информацию о среднем возрасте сотрудников компании.

Задача 14. Предоставьте информацию о среднем возрасте сотрудников по каждому департаменту.

Задача 15. Предоставьте соотношение женщин и мужчин по каждому департаменту.

Задача 16. По каждой должности (position) предоставьте список сотрудников, ее занимающих (допустимо ограничиться обозначением сотрудника по имени).

Задача 17. Предоставьте информацию по максимальному возрасту сотрудников в каждом из департаментов.

Задача 18. Предоставьте список сотрудников женского пола и сотрудников мужского пола в компании.

Задача 19. Предоставьте список сотрудников женского пола и сотрудников мужского пола по каждому департаменту.

Задача 20. Предоставьте информацию по разнице в возрасте между самым молодым и самым старым сотрудником по каждому департаменту.

Задача 21. Предоставьте информацию по минимальному, максимальному и среднего возрасту сотрудников на каждой должности.

Задача 22. Предоставьте список всех сотрудников женского пола, если их больше 30, в противном случае – предоставьте список всех сотрудников мужского пола.

Задача 23. Предоставьте информацию, превышает ли численность мужчин в компании численность женщин.

Задача 24. Предоставьте информацию, превышает ли численность мужчин численность женщин по каждому департаменту.

 

 С практикой на сегодня все!

Если что-то непонятно или не получается – welcome в комменты к посту или в лс:)

Канал: https://t.me/+relA0-qlUYAxZjI6

Мой тг: https://t.me/ironicMotherfucker

 

Дорогу осилит идущий!

Report Page