Java Lambdas: Función BinaryOperator

Breve explicación

La función BinaryOperator<T> es una interfaz funcional en Java que acepta dos argumentos del mismo tipo T y devuelve un resultado del mismo tipo T. Se utiliza cuando se desea realizar una operación entre dos valores del mismo tipo. Es una especialización de BiFunction<T, T, T>. El método funcional de BinaryOperator es apply(T t1, T t2).

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

import java.util.function.BinaryOperator;

public class LambdaBinaryOperatorExample {

    public static void main(String[] args) {
    	
        /*
         * 🛠️ BinaryOperator
         * 💡 Recibe dos valores del mismo tipo y retorna un valor del mismo tipo.
         */

        // Creamos un BinaryOperator que suma dos números enteros
        BinaryOperator<Integer> addNumbers = (n1, n2) -> {
            // Cuerpo completo: retorna la suma de los dos números
            return n1 + n2;
        };

        // Usamos el BinaryOperator para sumar 10 y 20
        System.out.println("Suma de 10 y 20: " + addNumbers.apply(10, 20));

        // Creamos otro BinaryOperator que encuentra la cadena más larga entre dos cadenas
        BinaryOperator<String> longerString = (s1, s2) -> {
            // Retorna la cadena más larga
            return s1.length() > s2.length() ? s1 : s2;
        };

        // Aplicamos el BinaryOperator para comparar "Hola" y "MundoJava"
        System.out.println("Cadena más larga entre 'Hola' y 'MundoJava': " + longerString.apply("Hola", "MundoJava"));
    }
    
}

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

import java.util.function.BinaryOperator;

public class LambdaBinaryOperatorExampleSimplified {
	

    public static void main(String[] args) {
        /*
         * 🛠️ BinaryOperator
         * 💡 Recibe dos valores del mismo tipo y retorna un valor del mismo tipo.
         */

        // Versión simplificada del BinaryOperator que suma dos números
        BinaryOperator<Integer> addNumbers = (n1, n2) -> n1 + n2;

        // Ejecutamos el BinaryOperator para sumar 15 y 25
        System.out.println("Suma de 15 y 25: " + addNumbers.apply(15, 25));

        // Versión simplificada del BinaryOperator que encuentra la cadena más larga
        BinaryOperator<String> longerString = (s1, s2) -> s1.length() > s2.length() ? s1 : s2;

        // Usamos el BinaryOperator para comparar "Java" y "Code"
        System.out.println("Cadena más larga entre 'Java' y 'Code': " + longerString.apply("Java", "Code"));
    }
    
}