Advertisement
tripTiPscout

methods

Nov 29th, 2022
789
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.25 KB | None | 0 0
  1.     public static void main(String[] args) {
  2.  
  3.         List<Employee> employees = addEmployeesToList();
  4.  
  5.         Map<Departments, List<Employee>> departmentsAndEmployees = groupEmployeesToDepartments(employees);
  6.  
  7.         Map<Departments, Double> departmentsAverageEmployeeWorkDays = getDepartmentsAverageDays(departmentsAndEmployees);
  8.  
  9.     }
  10.  
  11.     private static List<Employee> addEmployeesToList() {
  12.         List<Employee> employees = new ArrayList<>();
  13.  
  14.         employees.add(new Employee("Mic", LocalDate.of(2016, 1, 1), Levels.SENIOR, Departments.DEPARTMENT1));
  15.         employees.add(new Employee("Ban", LocalDate.of(2020, 4, 6), Levels.MID, Departments.DEPARTMENT1));
  16.         employees.add(new Employee("Pec", LocalDate.of(2021, 3, 8), Levels.JUNIOR, Departments.DEPARTMENT2));
  17.         employees.add(new Employee("Nuk", LocalDate.of(2022, 11, 10), Levels.DIRECTOR, Departments.DEPARTMENT3));
  18.         employees.add(new Employee("Cer", LocalDate.of(2020, 12, 5), Levels.VP, Departments.DEPARTMENT5));
  19.         employees.add(new Employee("Vuc", LocalDate.of(2020, 5, 30), Levels.C_LEVEL, Departments.DEPARTMENT4));
  20.         employees.add(new Employee("Tic", LocalDate.of(2022, 6, 12), Levels.INTERN, Departments.DEPARTMENT2));
  21.  
  22.         return employees;
  23.     }
  24.  
  25.     private static Map<Departments, List<Employee>> groupEmployeesToDepartments(List<Employee> employees) {
  26.         return employees
  27.                 .stream()
  28.                 .filter(e -> e.getLevel() != Levels.INTERN)
  29.                 .collect(Collectors.groupingBy(Employee::getDepartment));
  30.     }
  31.  
  32.     private static Map<Departments, Double> getDepartmentsAverageDays(Map<Departments, List<Employee>> departmentsAndEmployees) {
  33.         Map<Departments, Double> departmentsAverageEmployeeWorkDays = new LinkedHashMap<>();
  34.  
  35.         departmentsAndEmployees.forEach((department, employees) -> {
  36.  
  37.             long allEmployeeWorkDays = employees.stream().mapToLong(Employee::employeeWorkDays).sum();
  38.             int employeesInDepartment = employees.size();
  39.  
  40.             double averageDaysDepartment = 1.0 * allEmployeeWorkDays / employeesInDepartment;
  41.  
  42.             departmentsAverageEmployeeWorkDays.put(department, averageDaysDepartment);
  43.         });
  44.         return departmentsAverageEmployeeWorkDays;
  45.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement