$show=/label

Java 8 Stream Sum - Adding Numbers With Java Streams

SHARE:

A quick guide on how to summing all integers using java 8 streams api with examples.

1. Overview

In this article, we'll learn how to add the numbers in java using java 8 streams summing and reduce() methods.

To make the examples simple, we are going to write code based in the integer values.

Java 8 Stream Sum - Adding Numbers With Java Streams


2. Sum using Java Stream.reduce()

First, Stream api has a reduce() method which takes the accumulator as an argument. reduce() method is a terminal operation which means reduce() method produces the result from stream and this should be called at the end of the stream.

reduce() method takes the two numbers such as number 1 and number 2. These two numbers are taken and applied the logic of addition what we write. 

Please refer the following example program.

package com.javaprogramto.java8.streams.sum;

import java.util.Arrays;
import java.util.List;

public class IntegerSumExample1 {

	public static void main(String[] args) {

		List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
		
		int totalSum = numbers.stream().reduce(0, (number1, number2) -> number1 + number2);
		
		System.out.println("Sum of integers : "+totalSum);
	}
}
 

Output

Sum of integers : 55

 

Instead of passing "(number1, number2) -> number1 + number2)" logic to the reduce method, you can add this logic in the new method and call the new method as below. There will be no change in the output. In this way, we can reuse the add() method from many stream operations.

public class IntegerSumExample1 {

	public static void main(String[] args) {

		List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

		int totalSum = numbers.stream().reduce(0, ArithmeticUtils::add);

		System.out.println("Sum of integers : " + totalSum);
	}

}

class ArithmeticUtils {

	public static int add(int number1, int number2) {
		return number1 + number2;
	}
}
 

Additionally, you can use the builtin method Integer::sum from the reduce() method.

3. Using Collectors.summingInt()

Another way to add the list of integers is using the summingInt() of Collectors api.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

int summingIntValue = numbers.stream().collect(Collectors.summingInt(Integer::intValue));

System.out.println("Sum of integers using summingInt : " + summingIntValue);

 

Output: 

Sum of integers using summingInt : 55
 

In the similar to the summingInt(), there are separate methods to deal with the addition of long and double such as summingDouble() and summingLong().

4. Using IntStream.sum()

Next, Using IntStream api sum() method, we can get the addition of numbers from the list or map.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int intStreamSum = numbers.stream().mapToInt(Integer::intValue).sum();
System.out.println("IntStream sum : "+intStreamSum);


Output:

IntStream sum : 55


5. Stream Sum with Map values

Let us see now to get the sum of value of Map object. First we need to get the values list or set from the map and then apply any one of the methods what we have learnt so far.

Map<Double, Integer> map = new HashMap<>();
map.put(1.0, 100);
map.put(2.0, 200);
map.put(3.0, 300);
map.put(4.0, 400);

int mapValuesSum = map.values().stream().reduce(0, Integer::sum);
System.out.println("Map values sum : "+mapValuesSum);

Output: 

Map values sum : 1000


6. Stream sum with custom objects

Next, create the set of objects then add them to the list. Further apply all of these ways on the list.

List<Employee> emps = Arrays.asList(new Employee(100, "A", 25), new Employee(200, "B", 35),
		new Employee(300, "C", 45));

int sum = emps.stream().map(emp -> emp.getAge())
			  .reduce(0, (a, b) -> a + b);

sum = emps.stream().map(emp -> emp.getAge())
		  .mapToInt(Integer::intValue)
		  .sum();

sum = emps.stream().map(emp -> emp.getAge())
		  .collect(Collectors.summingInt(Integer::intValue));


All above ways produces the same output as sum value 105.


7. Full code Stream Sum Example

All the examples are shown are put together in the single program.

package com.javaprogramto.java8.streams.sum;

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

import com.javaprogramto.models.Employee;

public class IntegerSumExample1 {

	public static void main(String[] args) {

		List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

		// reduce() example
		int totalSum = numbers.stream().reduce(0, ArithmeticUtils::add);
		System.out.println("Sum of integers : " + totalSum);

		// summingInt() example
		int summingIntValue = numbers.stream().collect(Collectors.summingInt(Integer::intValue));
		System.out.println("Sum of integers using summingInt : " + summingIntValue);

		// IntStream sum() example
		int intStreamSum = numbers.stream().mapToInt(Integer::intValue).sum();
		System.out.println("IntStream sum : " + intStreamSum);

		Map<Double, Integer> map = new HashMap<>();
		map.put(1.0, 100);
		map.put(2.0, 200);
		map.put(3.0, 300);
		map.put(4.0, 400);

		int mapValuesSum = map.values().stream().reduce(0, Integer::sum);
		System.out.println("Map values sum : " + mapValuesSum);

		List<Employee> emps = Arrays.asList(new Employee(100, "A", 25), new Employee(200, "B", 35),
				new Employee(300, "C", 45));
		
		int sum = emps.stream().map(emp -> emp.getAge())
					  .reduce(0, (a, b) -> a + b);

		sum = emps.stream().map(emp -> emp.getAge())
				  .mapToInt(Integer::intValue)
				  .sum();
		
		sum = emps.stream().map(emp -> emp.getAge())
				  .collect(Collectors.summingInt(Integer::intValue));
		
		System.out.println("custom objects sum : "+sum);
	}

}

class ArithmeticUtils {

	public static int add(int number1, int number2) {
		return number1 + number2;
	}
}


		

Output

Sum of integers : 55
Sum of integers using summingInt : 55
IntStream sum : 55
Map values sum : 1000
custom objects sum : 105

8. Conclusion

In this post, we've seen what are the different ways to do sum of numbers using java stream api with examples.

GitHub

Stream.reduce()

Collectors api

COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java 8 Stream Sum - Adding Numbers With Java Streams
Java 8 Stream Sum - Adding Numbers With Java Streams
A quick guide on how to summing all integers using java 8 streams api with examples.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqP3tulw15HLaADDaoEukFIXYAZE79LM5odXfS6AnpmqxQDxVr5Af6faHGGvZxTAZ5DSbrP0N6hSA8HpaX95150Iu6b1seV8uvMNm2vg4bkgW91hxn2UtqcOivYxisBDW1D02Aty0SZQI/w400-h290/Java+8+Stream+Sum+-+Adding+Numbers+With+Java+Streams.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqP3tulw15HLaADDaoEukFIXYAZE79LM5odXfS6AnpmqxQDxVr5Af6faHGGvZxTAZ5DSbrP0N6hSA8HpaX95150Iu6b1seV8uvMNm2vg4bkgW91hxn2UtqcOivYxisBDW1D02Aty0SZQI/s72-w400-c-h290/Java+8+Stream+Sum+-+Adding+Numbers+With+Java+Streams.png
JavaProgramTo.com
https://www.javaprogramto.com/2021/11/java-8-stream-sum-adding-numbers-with.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2021/11/java-8-stream-sum-adding-numbers-with.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content