Найти в Дзене
DEBAGanov

Java 566. Учитывая список сотрудников, напишите код Java 8 для подсчета количества сотрудников в каждом отделе?

Чтобы подсчитать количество сотрудников в каждом отделе из заданного списка сотрудников, можно использовать метод groupingBy().

Предположим, что у нас есть класс Employee, который содержит поля name и department. Для того чтобы подсчитать количество сотрудников в каждом отделе, можно использовать метод groupingBy() и передать ему функцию, которая принимает объект Employee и возвращает отдел, к которому он относится:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Employee {
private String name;
private String department;

public Employee(String name, String department) {
this.name = name;
this.department = department;
}

public String getName() {
return name;
}

public String getDepartment() {
return department;
}
}

public class Main {
public static void main(String[] args) {
List<Employee> employees = Arrays.asList(
new Employee("Alice", "HR"),
new Employee("Bob", "Marketing"),
new Employee("Charlie", "Finance"),
new Employee("David", "Marketing"),
new Employee("Eva", "HR"),
new Employee("Frank", "Finance")
);

Map<String, Long> employeeCountByDepartment =
employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment, Collectors.counting()));

System.out.println("Employee count by department: " + employeeCountByDepartment);
}
}

В этом примере мы создаем список employees, содержащий объекты класса Employee, заполняем его данными и затем используем метод groupingBy() для группировки сотрудников по отделам. Затем мы используем метод counting() для подсчета количества сотрудников в каждом отделе. Результатом является карта, в которой ключами являются отделы, а значениями - количество сотрудников.

Затем мы выводим эту карту в консоль. Обратите внимание, что для каждого отдела может быть несколько сотрудников.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov