En este artículo vamos a explicar qué es una expresión lambda en Java y cómo puedes usarla en tu código. Una expresión lambda es una forma de escribir una función anónima, es decir, una función que no tiene nombre ni pertenece a ninguna clase. Las expresiones lambda se introdujeron en Java 8 como parte de la programación funcional, que permite trabajar con funciones como si fueran objetos.
Las expresiones lambda tienen la siguiente sintaxis:
(argumentos) -> {cuerpo}
Los argumentos son los parámetros de entrada de la función, que pueden ser cero o más, y pueden tener el tipo explícito o implícito. El cuerpo es el bloque de código que se ejecuta cuando se llama a la función, y puede contener una o más sentencias. Si el cuerpo solo tiene una sentencia, se pueden omitir las llaves y el return.
Las expresiones lambda se pueden asignar a variables o pasar como argumentos a otros métodos que esperan una interfaz funcional. Una interfaz funcional es una interfaz que solo tiene un método abstracto, y que se puede implementar con una expresión lambda. Algunas interfaces funcionales comunes son Runnable, Comparator, Consumer, Predicate y Function.
Veamos algunos ejemplos de cómo usar expresiones lambda en Java:
// Asignar una expresión lambda a una variable
Runnable r = () -> System.out.println("Hola mundo");
// Pasar una expresión lambda como argumento
List<String> nombres = Arrays.asList("Ana", "Pedro", "Juan");
nombres.forEach(nombre -> System.out.println(nombre.toUpperCase()));
// Usar una expresión lambda para implementar un Comparator
List<Persona> personas = Arrays.asList(new Persona("Ana", 20), new Persona("Pedro", 25), new Persona("Juan", 30));
personas.sort((p1, p2) -> p1.getEdad() - p2.getEdad());
// Usar una expresión lambda para filtrar una lista
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> pares = numeros.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
// Usar una expresión lambda para transformar una lista
List<String> palabras = Arrays.asList("hola", "mundo", "java");
List<Integer> longitudes = palabras.stream().map(p -> p.length()).collect(Collectors.toList());
Como puedes ver, las expresiones lambda te permiten escribir código más conciso y legible, y aprovechar las ventajas de la programación funcional en Java. Esperamos que este artículo te haya sido útil y te invitamos a seguir aprendiendo más sobre este tema.