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);
}