To group a list of employees by their department names using Java 8, you can utilize the Stream API and the Collectors class. Here’s an example of how you can achieve this:

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

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 EmployeeGroupingExample {
    public static void main(String[] args) {
        // Create a list of employees
        List<Employee> employees = new ArrayList<>();
        employees.add(new Employee("John", "Sales"));
        employees.add(new Employee("Alice", "Marketing"));
        employees.add(new Employee("Mike", "Sales"));
        employees.add(new Employee("Emma", "HR"));
        employees.add(new Employee("David", "Marketing"));
        employees.add(new Employee("Sophia", "HR"));

        // Group employees by department
        Map<String, List<Employee>> employeesByDepartment = employees.stream()
                .collect(Collectors.groupingBy(Employee::getDepartment));

        // Print the employees in each department
        for (Map.Entry<String, List<Employee>> entry : employeesByDepartment.entrySet()) {
            String department = entry.getKey();
            List<Employee> departmentEmployees = entry.getValue();
            System.out.println("Employees in department: " + department);
            for (Employee employee : departmentEmployees) {
                System.out.println("- " + employee.getName());
            }
            System.out.println();
        }
    }
}

Output:

Employees in department: HR
- Emma
- Sophia

Employees in department: Marketing
- Alice
- David

Employees in department: Sales
- John
- Mike

In the above example, we have a list of employees, and each employee has a name and a department. By using the Collectors.groupingBy method along with the Employee::getDepartment method reference, we group the employees based on their department names. The result is stored in a Map<String, List<Employee>> where the department names are the keys, and the corresponding employees are the values. Finally, we iterate over the map entries and print the employees in each department.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top