Funções lambda em Java

Por
2 min. de leitura

Fala, meus consagrados! Beleza?

Se um concurseiro está se preparando para concursos de TI como Banco do Brasil, MPU, INSS ou Receita Federal, é essencial conhecer as funções lambda em Java. Desde o Java 8, essa funcionalidade tem ganhado destaque em questões de provas, especialmente aquelas organizadas por CESGRANRIO, FGV e FCC, que buscam avaliar sua compreensão sobre programação funcional, APIs modernas e legibilidade de código.

Uma função lambda é uma forma curta de se representar uma função anônima, ou seja, uma função sem nome que pode ser passada como argumento ou atribuída a uma variável.

Essas funções incorporaram conceitos de programação funcional e tornam o código mais conciso, legível e eficiente.

Sintaxe:

(parâmetros) -> { corpo }

Ou em versões mais simples:

a -> a * 2

Possuem características principais:

  • São funções anônimas;
  • São baseadas em interfaces funcionais;
  • Possuem sintaxe compacta;
  • Possuem melhor legibilidade e manutenção; e
  • São usadas extensivamente com APIs modernas (Streams, Collections, etc.).
Figura 1: Características das funções lambda.

As expressões são limitadas e precisam retornar um valor imediatamente. Elas não podem conter:

  • Variáveis;
  • Atribuições; e
  • Instruções como if ou for.

Exemplo:

import java.util.ArrayList;
public class Main {
    public static void main(String[] args) {
        ArrayList<String> linguagens = new ArrayList<String>();
        linguagens.add("Python");
        linguagens.add("Java");
        linguagens.add("PHP");
        linguagens.add("C");
        linguagens.forEach((n) -> {System.out.println(n);});
    }
}

Resultado da execução:

Python
Java
PHP
C

No código, usamos o ArrayList<String> para criar uma lista dinâmica de strings. Depois foram adicionadas várias strings que representam linguagens de programação: Python, Java, PHP e C.

A partir da variável-objeto linguagens, acionamos o método forEach(…), que é um um método da interface Iterable que percorre todos os elementos. Para cada elemento da lista, foi aplicada uma função anônima: (n) -> { … }. Essa expressão lambda que recebe um elemento n da lista e executa um bloco de código: System.out.println(n), que imprime no console o nome da linguagem.

As funções lambda representam uma forma concisa de implementar métodos de interfaces funcionais. Uma interface funcional é qualquer interface com exatamente um método abstrato. Exemplos prontos da linguagem incluem:

  • Consumer<T>: aceita um valor e não retorna nada;
  • Function<T, R>: transforma um valor em outro;
  • Predicate<T>:retorna verdadeiro ou falso; e
  • Supplier<T>: fornece um valor sem receber parâmetros;

Exemplo com Consumer:

import java.util.function.Consumer;
public class Exemplo {
    public static void main(String[] args) {
        Consumer<String> exibir = s -> System.out.println("Valor: " + s);
        exibir.accept("Lambda em ação!");
    }
}

Agora faremos um exemplo com interface personalizada:

@FunctionalInterface
interface Saudacao {
    void dizer(String nome);
}
public class LambdaExemplo {
    public static void main(String[] args) {
        Saudacao saudacao = nome -> System.out.println("Olá, " + nome + "!");
        saudacao.dizer("Mundo");
    }
}

No código acima, temos uma interface Saudacao e que possui a anotação @FunctionalInterface, informando ao compilador que a interface deve ter apenas um método abstrato. Isso permite que ela seja usada com expressões lambda. 

Já no código da classe LambdaExemplo, a variável saudacao recebe uma função lambda com um parâmetro nome, que imprime uma saudação personalizada. A chamada saudacao.dizer(“Mundo”) executa a lambda, imprimindo:

Olá, Mundo!

As expressões lambda marcaram uma nova era para o Java, abrindo as portas para a programação funcional de forma fluida e natural. Elas simplificam o código, facilitam a leitura e integram-se perfeitamente com as novas APIs modernas. Ao dominar lambdas, você amplia significativamente sua capacidade de escrever código Java mais limpo, expressivo e eficiente.

Espero que tenham gostado! 

Forte abraço e até a próxima jornada!

_________________________

Professor Rogerão Araújo


Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil? Clique nos links abaixo:

CNU 2025 (CONCURSOS NACIONAL UNIFICADO 2)

CONCURSOS 2025

CONCURSOS 2026

CONCURSOS ABERTOS

QUESTÕES DE CONCURSOS

Receba gratuitamente no seu celular as principais notícias do mundo dos concursos. Clique no link abaixo e inscreva-se:

WHATSAPP

TELEGRAM

Por
2 min. de leitura