Sobes.tech
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.