

Stream Group by operation used for summing, averaging based on specified group by cause. Here is different -different example of group by operation.
Table of Contents
Example 1: Stream Group By field and Collect List
java.util.List<Employee> employees = Employee.getEmployee();
java.util.Map<String, java.util.List<Employee>> employess = employees.stream()
.collect(Collectors.groupingBy(Employee::getDesignation));
employess.forEach((name, employeeList) -> {
System.out.println("Group Name: " + name);
employeeList.forEach(System.out::println);
});Output:
Group Name: Sr. Developer 2 : Joy : Male : Sr. Developer Group Name: Developer 1 : Bob : Male : Developer 4 : Bat : Male : Developer 5 : Jolly : Female : Developer 6 : Bobby : Female : Developer Group Name: CEO 3 : John : Male : CEO
Example 2: Stream Group By Field and Collect Count
java.util.List<Employee> employees = Employee.getEmployee();
java.util.Map<String, Long> employess = employees.stream()
.collect(Collectors.groupingBy(employee->employee.getDesignation(),Collectors.counting()));
employess.forEach((name, total) -> {
System.out.println(name +" - "+ total);
});Output:
Sr. Developer - 1 Developer - 4 CEO - 1
Example 3: Stream Group By Field and Collect Only Single field
java.util.List<Employee> employees = Employee.getEmployee();
java.util.Map<String, java.util.List<String>> employess = employees.stream()
.collect(Collectors.groupingBy(Employee::getDesignation, Collectors.mapping(Employee::getName, Collectors.toList())));
employess.forEach((name, employeeList) -> {
System.out.println("Group Name: " + name);
employeeList.forEach(System.out::println);
System.out.println("---------------------------------------------");
});
Output:
Group Name: Sr. Developer Joy --------------------------------------------- Group Name: Developer Bob Bat Jolly Bobby --------------------------------------------- Group Name: CEO John ---------------------------------------------
Example 4: Stream Group By multiple fields
java.util.List<Employee> employees = Employee.getEmployee();
java.util.Map<String, java.util.Map<String,java.util.List<Employee>>> employessGroup= employees.stream()
.collect(Collectors.groupingBy(employee->employee.getDesignation(),Collectors.groupingBy(employee-> employee.getGender())));
employessGroup.forEach((designation, designationMap) -> {
System.out.println("Designation --> "+designation);
designationMap.forEach((gender,employeeList)->{
System.out.println("Gender -------> "+gender);
employeeList.forEach(System.out::println);
});
System.out.println();
});Output:
Designation --> Sr. Developer Gender -------> Male 2 : Joy : Male : Sr. Developer Designation --> Developer Gender -------> Female 5 : Jolly : Female : Developer 6 : Bobby : Female : Developer Gender -------> Male 1 : Bob : Male : Developer 4 : Bat : Male : Developer Designation --> CEO Gender -------> Male 3 : John : Male : CEO
Employee.java
package com.javadeveloperzone;
import java.util.ArrayList;
/**
* Created by JavaDeveloperZone on 29-04-2017.
*/
public class Employee {
private int no;
private String name;
private String designation;
private String gender;
public Employee(int no, String name, String designation, String gender) {
this.no = no;
this.name = name;
this.designation = designation;
this.gender = gender;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return this.no + " : " + this.name + " : " + gender + " : " + designation;
}
public static java.util.List<Employee> getEmployee() {
java.util.List<Employee> employees = new ArrayList<>();
employees.add(new Employee(1, "Bob", "Developer", "Male"));
employees.add(new Employee(2, "Joy", "Sr. Developer", "Male"));
employees.add(new Employee(3, "John", "CEO", "Male"));
employees.add(new Employee(4, "Bat", "Developer", "Male"));
employees.add(new Employee(5, "Jolly", "Developer", "Female"));
employees.add(new Employee(6, "Bobby", "Developer", "Female"));
return employees;
}
}
Ref:
Was this post helpful?
Let us know if you liked the post. That’s the only way we can improve.
