Today you will learn:
filter, map, reduce, collectBy the end, you will be able to use functional programming concepts in Java for concise and efficient data processing.
Streams allow you to perform operations on collections in a functional style.
import java.util.*;
import java.util.stream.*;
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> even = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
even.forEach(System.out::println);
Use map to transform elements and reduce to combine results.
int sumOfSquares = numbers.stream()
.filter(n -> n % 2 != 0) // odd numbers
.map(n -> n * n) // square each
.reduce(0, Integer::sum); // sum
System.out.println("Sum of squares of odd numbers: " + sumOfSquares);
Parallel streams can improve performance for large collections by processing elements concurrently.
int sumParallel = numbers.parallelStream()
.filter(n -> n % 2 != 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println("Parallel sum: " + sumParallel);
Lambdas provide a concise way to pass behavior to collection methods.
numbers.forEach(n -> System.out.println(n * 2));
Method references are a shorthand for lambdas that call an existing method.
numbers.forEach(System.out::println);
import java.util.*;
import java.util.stream.*;
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> even = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
even.forEach(System.out::println);
Use streams to find the sum of squares of all odd numbers in a list.
Steps:
stream() and filter to select odd numbersmap to square each numberreduce to sum themExample:
import java.util.*;
import java.util.stream.*;
public class SumSquaresOdd {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int sumOfSquares = numbers.stream()
.filter(n -> n % 2 != 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println("Sum of squares of odd numbers: " + sumOfSquares);
}
}