In this tutorials, I am going to show you how to calculate the total salaries of employees using Java 8 summingInt.

Java 8 summingInt :

summingInt(ToIntFunction<? super T> mapper) is method in Collector class. It produces the sum of a integer-valued function applied to the input elements.

Like summingInt(), summingLong(ToLongFunction<? super T> mapper) also a method in same Collector class. It produces the sum of a long-valued function applied to the input elements.

Here is the example to calculate the sum of salaries of employees.

Employee.java


class Employee{
    private int id;
    private int deptId;
    private String name;
    private int salary;
    
    public Employee(int id, int deptId, String name, int salary) {
        super();
        this.id = id;
        this.deptId = deptId;
        this.name = name;
        this.salary = salary;
    }
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public int getSalary() {
        return salary;
    }
    public int getDeptId() {
        return deptId;
    }
    
}

Calculating the summingInt on Employees salary.


package com.onlinetutorialspoint.java8;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Java8_SummingInt {
    public static void main(String[] args) {
        List<Employee> employees = Arrays.asList(new Employee(1, 1000,
                "Chandra Shekhar", 6000),
                new Employee(1, 1000, "Rajesh", 8000), new Employee(1, 1004,
                        "Rahul", 9000), new Employee(1, 1001, "Suresh", 12000),
                new Employee(1, 1004, "Satosh", 8500));

        int total = employees.stream().collect(
                Collectors.summingInt(Employee::getSalary));
        System.out.println("Total Employees Salary : " + total);
    }

}

[box type=”success” align=”alignleft” class=”” width=”100%”]

Total Employees Salary : 43500

[/box]

Calculate the Sum by Dept :

We can also calculate the sum of salaries by filtering the department ids by using Stream filters in Java 8.


package com.onlinetutorialspoint.java8;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Java8_SummingInt {
    public static void main(String[] args) {
        List<Employee> employees = Arrays.asList(new Employee(1,1000,"Chandra Shekhar",6000),
                new Employee(1,1000,"Rajesh",8000),
                new Employee(1,1004,"Rahul",9000),
                new Employee(1,1001,"Suresh",12000),
                new Employee(1,1004,"Satosh",8500)
                );
        
        int total = employees.stream()
                .collect(Collectors.summingInt(Employee::getSalary));
        
        int totalSalByDept = employees.stream().
                filter(name-> 1000 == name.getDeptId())
                .collect(Collectors.summingInt(Employee::getSalary));
        
        System.out.println("Total Employees Salary : "+total);
        System.out.println("Total Employees Salary of 1000 Dept : "+totalSalByDept);
    }
    
}

[box type=”success” align=”alignleft” class=”” width=”100%”]

Total Employees Salary : 43500
Total Employees Salary of 1000 Dept : 14000

[/box]

Happy Learning 🙂