groupingBy classifier collector
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")),
new Employee(8, "David", 30, new Department(1, "HR")));
Syntax:
groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
Examples
groupingByCounting()
// counting
public void groupingByCounting() {
Map<Employee, Long> nameCount = employees.stream().collect(Collectors
.groupingBy(string -> string, Collectors.counting()));
nameCount.forEach((name, count) -> { System.out.println(name + ":" + count); });
}