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(", ")));
});
