# DoubleStream reduce(double identity, DoubleBinaryOperator op) in Java with Examples

**DoubleStream reduce(double identity, DoubleBinaryOperator op)** performs a reduction on the elements of this stream, using the provided identity value and an associative accumulation function, and returns the reduced value.

A **reduction operation** or **fold** takes a sequence of input elements and combines them into a single summary result, such as finding the sum or maximum of a set of numbers. An operator or function **op** is associative if the following holds :

Attention reader! Don’t stop learning now. Get hold of all the important **Java Foundation** and Collections concepts with the **Fundamentals of Java and Java Collections Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

(a op b) op c == a op (b op c)

This is a **terminal operation** i.e, it may traverse the stream to produce a result or a side-effect. After the terminal operation is performed, the stream pipeline is considered consumed, and can no longer be used.

**Syntax :**

double reduce(double identity, DoubleBinaryOperator op)

**Parameters :**

**identity :**The identity value for the accumulating function.**DoubleBinaryOperator :**An operation upon two double-valued operands and producing a double-valued result.**op :**An associative, stateless function for combining two values.

**Return Value : **The result of the reduction.

**Example 1 :**

`// Java code for DoubleStream reduce` `// (double identity, DoubleBinaryOperator op)` `import` `java.util.*;` `import` `java.util.stream.DoubleStream;` ` ` `class` `GFG {` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `// Creating a DoubleStream` ` ` `DoubleStream stream = DoubleStream.of(` `1.2` `, ` `2.3` `,` ` ` `3.4` `, ` `4.5` `, ` `5.6` `);` ` ` ` ` `// Using DoubleStream reduce` ` ` `// (double identity, DoubleBinaryOperator op)` ` ` `double` `answer = stream.reduce(` `5` `, (num1, num2)` ` ` `-> (num1 + num2));` ` ` ` ` `// Displaying the result` ` ` `System.out.println(answer);` ` ` `}` `}` |

Output :

22.0

**Example 2 :**

`// Java code for DoubleStream reduce` `// (double identity, DoubleBinaryOperator op)` `import` `java.util.*;` `import` `java.util.stream.DoubleStream;` ` ` `class` `GFG {` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `// Creating a DoubleStream` ` ` `DoubleStream stream = DoubleStream.of(` `2.1` `, ` `3.2` `,` ` ` `4.3` `, ` `5.4` `, ` `6.5` `);` ` ` ` ` `// Using DoubleStream reduce` ` ` `// (double identity, DoubleBinaryOperator op)` ` ` `double` `answer = stream.reduce(` `3` `, (num1, num2)` ` ` `-> (num1 * num2) * ` `2` `);` ` ` ` ` `// Displaying the result` ` ` `System.out.println(answer);` ` ` `}` `}` |

Output :

97367.96160000002