Junior
¿Qué son las expresiones lambda en Java?
sobes.tech AI
Respuesta de la IA
Una expresión lambda es una forma concisa de función anónima, que implementa los métodos de una interfaz funcional.
Estructura: (parámetros) -> { cuerpo de la expresión }.
| Parte | Descripción | Ejemplos |
|---|---|---|
parámetros |
Lista de parámetros, puede estar vacía. Los tipos pueden no estar indicados (se infieren). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Operador flecha (arrow operator). Separa los parámetros del cuerpo. | -> |
cuerpo de la expresión |
Cuerpo de la lambda. Puede ser una expresión o un bloque de código. | x * x<br>{ System.out.println(x); } |
Ejemplos de uso:
-
Implementación de interfaces funcionales:
import java.util.function.Consumer; // Antes, implementación tradicional con clase anónima Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Clase anónima tradicional"); // Usando expresión lambda Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Expresión lambda"); -
Trabajando con Streams API:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Filtrar números pares con lambda List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Salida: [2, 4] // Transformar números en sus cuadrados List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Salida: [1, 4, 9, 16, 25]
Ventajas:
- Reducción de código en comparación con clases anónimas.
- Mayor legibilidad para operaciones simples.
- Facilidad de uso con Streams API y otras API orientadas a programación funcional.