Lambda Expressions in Java: filtering even numbers

Filtering Even Numbers In this example, we have a list of numbers from 1 to 10. We define a lambda expression n -> n % 2 == 0 and pass it as a predicate to the filterNumbers method. The lambda expression checks if a number is even. The filterNumbers method takes a list of numbers and a Predicate<Integer> as arguments. It iterates over the numbers and applies the predicate using the test method. If the predicate returns true, the number is printed.

Filtering Numbers Greater Than 5 In this part of the example, we reuse the filterNumbers method to filter numbers greater than 5. We define a different lambda expression n -> n > 5 and pass it as the predicate. This lambda expression checks if a number is greater than 5. Again, the filterNumbers method iterates over the numbers and applies the predicate, printing the numbers that satisfy the condition.

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class LambdasExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // Title: Filtering Even Numbers
        System.out.println("Filtered Even Numbers:");
        filterNumbers(numbers, n -> n % 2 == 0);

        // Title: Filtering Numbers Greater Than 5
        System.out.println("Filtered Numbers Greater Than 5:");
        filterNumbers(numbers, n -> n > 5);
    }

    private static void filterNumbers(List<Integer> numbers, Predicate<Integer> predicate) {
        for (Integer number : numbers) {
            if (predicate.test(number)) {
                System.out.println(number);
            }
        }
    }
}

These examples demonstrate the flexibility and reusability of lambdas by allowing us to easily define different filtering conditions without duplicating the filtering logic.