Java / Java8 streams
One programming question related to Java streams. I have an Array of Employees object (includes empName, sex, age, city). Can you write a Java program using Java streams concepts to find the number of Employees in each City? For example, Employees in Mumbai: 35 like that. Thanks in Advance.
Thanks for your question. Consider the below example. Kindly share your feedback/suggestions in the comment section.
package net.javapedia.streams; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; class Employee { public Employee(String empName, Sex sex, String city) { super(); this.empName = empName; this.sex = sex; this.city = city; } String empName; public String getEmpName() { return empName; } Sex sex; String city; public String getCity() { return city; } } enum Sex { M, F; } public class GroupbyCountingExample { public static void main(String[] str) { List<Employee> myEmployees = new ArrayList<>(); myEmployees.add(new Employee("Name1", Sex.M, "New York")); myEmployees.add(new Employee("Name2", Sex.F, "Dallas")); myEmployees.add(new Employee("Name3", Sex.F, "Charlotte")); myEmployees.add(new Employee("Name4", Sex.F, "Charlotte")); myEmployees.add(new Employee("Name5", Sex.M, "New York")); myEmployees.add(new Employee("Name5", Sex.M, "New York")); Map<String, Long> empCountByCity = myEmployees.stream() .collect(Collectors.groupingBy(Employee::getCity, Collectors.counting())); for (String city : empCountByCity.keySet()) { System.out.println("Employee count in " + city + " :" + empCountByCity.get((city))); } } }
Output: Employee count in New York :3 Employee count in Charlotte :2 Employee count in Dallas :1
More Related questions...