How to group by range of values in Java 8 using streams

kaptan

Here is a sample scenario:

Imagine we have employee records like:

name, age, salary (in 1000 dollars)
   a,  20,     50
   b,  22,     53
   c,  34,     79

and so on. The goal is to calculate the average salary of different age groups (for instance between 21 and 30 and 31 to 40 and so on).

I want to do this using stream and I just cant get my head around how I need to use groupingBy to get this done. I am thinking maybe I need to define some sort of tuple age range. Any ideas?

Baski

The below code should give you what you are looking for. The key is "Collectors" class which support grouping.

Map<Double,Integer> ageGroup= employees.stream().collect(Collectors.groupingBy(e->Math.ceil(e.age/10.0),Collectors.summingInt(e->e.salary)));

The illustration assuming the salary is integer but easy to switch to double

The complete program looks like

public static void main(String[] args) {
    // TODO Auto-generated method stub

    List<Employee> employees = new ArrayList<>();
    employees.add(new Employee("a",20,100));
    employees.add(new Employee("a",21,100));
    employees.add(new Employee("a",35,100));
    employees.add(new Employee("a",32,100));


    Map<Double,Integer> ageGroup= employees.stream().collect(Collectors.groupingBy(e->Math.ceil(e.age/10.0),Collectors.summingInt(e->e.salary)));
    System.out.println(ageGroup);
}

public static class Employee {
    public Employee(String name, int age, int salary) {
        super();
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    public String name;
    public int age;
    public int salary;

}

The output is

{4.0=200, 2.0=100, 3.0=100}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How to multiply values in a list using java 8 streams

From Dev

How to multiply values in a list using java 8 streams

From Dev

Group by values in map using java streams

From Dev

How to check if all elements of type integer is within given range using lambdas and streams in Java 8?

From Dev

How to Group Objects in a List into other Lists by Attribute using streams & Java 8?

From Dev

How to write it using streams? Java 8

From Java

How to flatten map values using java streams

From Dev

How to flatten map values using java streams

From Dev

How to use java 8 streams to make a new list by using another's list objects values with filter?

From Dev

Java 8 streams - How do I manipulate value in a group by result?

From Dev

Java 8 streams: count values

From Dev

How to group and count elements in a sublist using java streams

From Dev

GroupingBy using Java 8 streams

From Dev

How to collect values from one map after removing some entires against each key and produce another map using streams (Java 8)

From Dev

Java 8 streams - modifying all elements in a group

From Dev

How to return Optional String using Java 8 streams

From Java

How to remove innermap key using java 8 streams

From Dev

Java 8, how can I implement a switch statement using streams?

From Dev

How to get length of path using java 8 streams

From Dev

How to map elements of the list to their indices using Java 8 streams?

From Dev

How can i achieve the same functionality with Java 8 using streams

From Dev

How to separate a List by a condition using Java 8 streams

From Dev

Java 8, how can I implement a switch statement using streams?

From Dev

Using Java 8 Streams, how to find the max for a given element in a HashMap

From Dev

How to remove innermap key using java 8 streams

From Dev

How to get length of path using java 8 streams

From Dev

How to generate summary report with nested collection using Java 8 streams?

From Dev

How to filter nested loops using Java 8 streams and filters?

From Dev

How to merge lists of Map with Lists values using Java Streams API?

Related Related

  1. 1

    How to multiply values in a list using java 8 streams

  2. 2

    How to multiply values in a list using java 8 streams

  3. 3

    Group by values in map using java streams

  4. 4

    How to check if all elements of type integer is within given range using lambdas and streams in Java 8?

  5. 5

    How to Group Objects in a List into other Lists by Attribute using streams & Java 8?

  6. 6

    How to write it using streams? Java 8

  7. 7

    How to flatten map values using java streams

  8. 8

    How to flatten map values using java streams

  9. 9

    How to use java 8 streams to make a new list by using another's list objects values with filter?

  10. 10

    Java 8 streams - How do I manipulate value in a group by result?

  11. 11

    Java 8 streams: count values

  12. 12

    How to group and count elements in a sublist using java streams

  13. 13

    GroupingBy using Java 8 streams

  14. 14

    How to collect values from one map after removing some entires against each key and produce another map using streams (Java 8)

  15. 15

    Java 8 streams - modifying all elements in a group

  16. 16

    How to return Optional String using Java 8 streams

  17. 17

    How to remove innermap key using java 8 streams

  18. 18

    Java 8, how can I implement a switch statement using streams?

  19. 19

    How to get length of path using java 8 streams

  20. 20

    How to map elements of the list to their indices using Java 8 streams?

  21. 21

    How can i achieve the same functionality with Java 8 using streams

  22. 22

    How to separate a List by a condition using Java 8 streams

  23. 23

    Java 8, how can I implement a switch statement using streams?

  24. 24

    Using Java 8 Streams, how to find the max for a given element in a HashMap

  25. 25

    How to remove innermap key using java 8 streams

  26. 26

    How to get length of path using java 8 streams

  27. 27

    How to generate summary report with nested collection using Java 8 streams?

  28. 28

    How to filter nested loops using Java 8 streams and filters?

  29. 29

    How to merge lists of Map with Lists values using Java Streams API?

HotTag

Archive