Learnitweb

Group Employees by Department Using Java Streams

Assume an Employee class:

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

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

    public String getName() { return name; }
    public String getDepartment() { return department; }
}

And a list of employees:

List<Employee> employees = Arrays.asList(
    new Employee("Alice", "HR"),
    new Employee("Bob", "IT"),
    new Employee("Charlie", "IT"),
    new Employee("David", "HR")
);

Using Collectors.groupingBy

Map<String, List<Employee>> employeesByDept = employees.stream()
    .collect(Collectors.groupingBy(Employee::getDepartment));

employeesByDept.forEach((dept, emps) -> {
    System.out.println(dept + ": " + emps.stream()
                                           .map(Employee::getName)
                                           .collect(Collectors.joining(", ")));
});