Java Lambdas: Función BiPredicate

Breve explicación

La función BiPredicate<T, U> es una interfaz funcional en Java que acepta dos argumentos de tipo T y U y devuelve un valor booleano (true o false). Se utiliza para evaluar una condición basada en dos valores. El método funcional de BiPredicate es test(T t, U u).

Ejemplo 1: Versión completa del cuerpo de la función Lambda
Java
package org.example.tinajero;

import java.util.function.BiPredicate;

public class LambdaBiPredicateExample {

    public static void main(String[] args) {
    	
        /*
         * 🛠️ BiPredicate
         * 💡 Recibe dos valores de tipo T y U, y retorna un booleano (true o false).
         */

        // Creamos un BiPredicate que verifica si el primer número es mayor que el segundo
        BiPredicate<Integer, Integer> isFirstGreaterThanSecond = (num1, num2) -> {
            // Cuerpo completo: retorna true si el primer número es mayor que el segundo
            return num1 > num2;
        };

        // Usamos el BiPredicate para comparar 10 y 5
        System.out.println("¿10 es mayor que 5? " + isFirstGreaterThanSecond.test(10, 5));

        // Creamos otro BiPredicate que evalúa si dos cadenas tienen la misma longitud
        BiPredicate<String, String> haveSameLength = (str1, str2) -> {
            // Retorna true si ambas cadenas tienen la misma longitud
            return str1.length() == str2.length();
        };

        // Aplicamos el BiPredicate para comparar "Hola" y "Java"
        System.out.println("¿'Hola' y 'Java' tienen la misma longitud? " + haveSameLength.test("Hola", "Java"));
    }
    
}

Ejemplo 2: Reducción de la expresión Lambda
Java
package org.example.tinajero;

import java.util.function.BiPredicate;

public class LambdaBiPredicateExampleSimplified {

    public static void main(String[] args) {
    	
        /*
         * 🛠️ BiPredicate
         * 💡 Recibe dos valores de tipo T y U, y retorna un booleano (true o false).
         */

        // Versión simplificada del BiPredicate que verifica si el primer número es mayor que el segundo
        BiPredicate<Integer, Integer> isFirstGreaterThanSecond = (num1, num2) -> num1 > num2;

        // Ejecutamos el BiPredicate para comparar 7 y 3
        System.out.println("¿7 es mayor que 3? " + isFirstGreaterThanSecond.test(7, 3));

        // Versión simplificada del BiPredicate que evalúa si dos cadenas tienen la misma longitud
        BiPredicate<String, String> haveSameLength = (str1, str2) -> str1.length() == str2.length();

        // Usamos el BiPredicate para comparar "Java" y "Code"
        System.out.println("¿'Java' y 'Code' tienen la misma longitud? " + haveSameLength.test("Java", "Code"));
    }
    
}