groupingBy classifier
Data
List<Employee> employees = List.of(
new Employee(1, "Alex", 30, new Department(1, "HR")),
new Employee(2, "Alex", 36, new Department(1, "HR")),
new Employee(3, "David", 30, new Department(1, "HR")),
new Employee(4, "Andrew", 30, new Department(2, "Finance")),
new Employee(5, "Edward", 31, new Department(2, "Finance")),
new Employee(6, "Nathan",42, new Department(3, "ADMIN")),
new Employee(7, "Frank",23 , new Department(3, "ADMIN")));
Syntax:
groupingBy(Function<? super T,? extends K> classifier)
Examples
groupingByAge()
// Grouping all employees by age
public void groupingByAge() {
Map<Integer, List<Employee>> result = employees.stream()
.collect(Collectors.groupingBy(Employee::getAge));
System.out.println(result);
}
groupingByDepartment()
// Grouping all employees by department
public void groupingByDepartment() {
Map<Department, List<Employee>> result = employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment));
System.out.println(result);
}
groupingByEmployeeLength()
public void groupingByEmployeeLength() {
Map<String, List<Employee>> result = employees.stream()
.collect(Collectors.groupingBy(Employee::getName));
result.forEach((k, v) -> System.out.println("key.length = " + k.length() + ", key = " + k));
}
groupingByName()
public void groupingByName() {
Map<String, List<Employee>> result = employees.stream()
.collect(Collectors.groupingBy(Employee::getName));
System.out.println(result);
}