Skip to main content

groupingBy classifier supplier 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, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)

Examples​

groupingWithFiltering()​

    // Filtering all persons with salary less than 300
public void groupingWithFiltering() {
Map<Rec.Department, Long> map = persons.stream()
.collect(groupingBy(Rec.Person::department, filtering(p -> p.salary() > 300d, counting())));

System.out.println(map);
}