Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(String[] args) {
- List<Employee> employees = addEmployeesToList();
- Map<Departments, List<Employee>> departmentsAndEmployees = groupEmployeesToDepartments(employees);
- Map<Departments, Double> departmentsAverageEmployeeWorkDays = getDepartmentsAverageDays(departmentsAndEmployees);
- }
- private static List<Employee> addEmployeesToList() {
- List<Employee> employees = new ArrayList<>();
- employees.add(new Employee("Mic", LocalDate.of(2016, 1, 1), Levels.SENIOR, Departments.DEPARTMENT1));
- employees.add(new Employee("Ban", LocalDate.of(2020, 4, 6), Levels.MID, Departments.DEPARTMENT1));
- employees.add(new Employee("Pec", LocalDate.of(2021, 3, 8), Levels.JUNIOR, Departments.DEPARTMENT2));
- employees.add(new Employee("Nuk", LocalDate.of(2022, 11, 10), Levels.DIRECTOR, Departments.DEPARTMENT3));
- employees.add(new Employee("Cer", LocalDate.of(2020, 12, 5), Levels.VP, Departments.DEPARTMENT5));
- employees.add(new Employee("Vuc", LocalDate.of(2020, 5, 30), Levels.C_LEVEL, Departments.DEPARTMENT4));
- employees.add(new Employee("Tic", LocalDate.of(2022, 6, 12), Levels.INTERN, Departments.DEPARTMENT2));
- return employees;
- }
- private static Map<Departments, List<Employee>> groupEmployeesToDepartments(List<Employee> employees) {
- return employees
- .stream()
- .filter(e -> e.getLevel() != Levels.INTERN)
- .collect(Collectors.groupingBy(Employee::getDepartment));
- }
- private static Map<Departments, Double> getDepartmentsAverageDays(Map<Departments, List<Employee>> departmentsAndEmployees) {
- Map<Departments, Double> departmentsAverageEmployeeWorkDays = new LinkedHashMap<>();
- departmentsAndEmployees.forEach((department, employees) -> {
- long allEmployeeWorkDays = employees.stream().mapToLong(Employee::employeeWorkDays).sum();
- int employeesInDepartment = employees.size();
- double averageDaysDepartment = 1.0 * allEmployeeWorkDays / employeesInDepartment;
- departmentsAverageEmployeeWorkDays.put(department, averageDaysDepartment);
- });
- return departmentsAverageEmployeeWorkDays;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement