Java Lambda Expression - Aggregation
A lambda expression is an anonymous function which performs arithmetic or relational operation over an array of data in sequential or parallel manner. It replaces for-loop like operation over array objects.
lambda expression |
Stream Object The array of data might be a java primitive data type (integer or long or double) or a java collection object (ArrayList). In order to execute the lambda expression over array of data, we need a Stream object (IntStream, LongStream or DoubleStream).
The Stream object can be obtained by many ways, however, an example shown here.
An array variable X initialized with random integers int X [] = { 48, 21, 23, 45, 53, 14, 18, 34, 11, 19,21,23,53 }; IntStream object is obtained by passing X as a argument to Arrays.stream function. IntStream intstream =Arrays.stream(X) An array variable X2 initialized with random integers double X2 [] = { 0.58, 2.1, 1.23, 0.45, 3.57, 5.62, 0.86, 0.234, 0.361, 0.296,0.211 }; DoubleStream object is obtained by passing X2 as a argument to Arrays.stream function. DoubleStream dblstream =Arrays.stream(X2) The obtaining Stream object depends on type of argument passed over Arrays.stream.
The Stream object's member functions support the following application over array of data using lambda functions, They are,
- Aggregation
- Filtering
- Maping
- For Each
Lambda expression Aggregation over array of interger
The following Java code shown below is example of lambda expression application over on array of integers, generated randomly using the Random object. The lambda aggregation functions like
sum - sum over an array elements, average - average over an array of elements min - find a element have minimum value in the array of elements max - find a element have maximum value in the array of elementsit results one element output given over array of elements
import java.util.Arrays;
import java.util.Random;
import java.util.stream.IntStream;
public class Lambda1 {
public static void main(String[] args)
{
int size=20;
int X [] = new int[size];
Random rd = new Random();
for (int n=0;n<size;n++)
X[n] = rd.nextInt(100);
System.out.println("\n A randomly integer array ");
System.out.println(Arrays.toString(X));
System.out.println("\n Find sum of the array ");
IntStream ints=Arrays.stream(X);
int sum = ints.sum();
System.out.println("sum :"+ sum);
System.out.println("\n Find Average of the array ");
IntStream ints2=Arrays.stream(X);
double average = ints2.average().getAsDouble();
System.out.println("Average :"+ average);
System.out.println("\nFind Maximum of the array ");
IntStream ints3=Arrays.stream(X);
int max = ints3.max().getAsInt();
System.out.println("Max :"+ max);
System.out.println("\nFind Minimum of the array ");
IntStream ints4=Arrays.stream(X);
int min = ints4.min().getAsInt();
System.out.println("Min :"+ min);
}
}
Output
A randomly integer array [33, 87, 30, 62, 47, 46, 93, 12, 37, 24, 38, 67, 15, 94, 39, 21, 89, 35, 83, 48] Find sum of the array sum :1000 Find Average of the array Average :50.0 Find Maximum of the array Max :94 Find Minimum of the array Min :12
Comments
Post a Comment