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 :
(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
