Sobes.tech
Junior

O que são expressões lambda em Java?

sobes.tech IA

Resposta da IA

Uma expressão lambda é uma forma concisa de função anónima, que implementa os métodos de uma interface funcional.

Estrutura: (parâmetros) -> { corpo da expressão }.

Parte Descrição Exemplos
parâmetros Lista de parâmetros, pode estar vazia. Os tipos podem não estar indicados (são inferidos). ()<br>x<br>(x, y)<br>(int x, String y)
-> Operador seta (arrow operator). Separa os parâmetros do corpo. ->
corpo da expressão Corpo da lambda. Pode ser uma expressão ou um bloco de código. x * x<br>{ System.out.println(x); }

Exemplos de utilização:

  • Implementação de interfaces funcionais:

    import java.util.function.Consumer;
    
    // Antes, implementação tradicional com classe anónima
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Classe anónima tradicional");
    
    // Com utilização de expressão lambda
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Expressão lambda");
    
  • Trabalhando com API Streams:

    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 com lambda
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Saída: [2, 4]
    
    // Transformar números em seus quadrados
    List<Integer> squares = numbers.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(squares); // Saída: [1, 4, 9, 16, 25]
    

Vantagens:

  • Redução de código em comparação com classes anónimas.
  • Aumento da legibilidade para operações simples.
  • Facilidade de uso com API Streams e outras APIs orientadas à programação funcional.