
Gerenciamento de Memória em Java

em 21 de Janeiro de 2025
As expressões lambda, introduzidas no Java 8, revolucionaram a maneira como os desenvolvedores escrevem código funcional. Elas permitem que você trate funções como valores, reduzindo a quantidade de código necessário para implementar interfaces funcionais. Além de tornar o código mais conciso, as expressões lambda são fundamentais para trabalhar com APIs como a Stream API e o Java Collections Framework.
Neste artigo, exploraremos o conceito de expressões lambda, seus usos e como elas simplificam o desenvolvimento em Java.
O Que São Expressões Lambda?
Uma expressão lambda é uma maneira simplificada de implementar interfaces funcionais (interfaces com um único método abstrato). Elas permitem que você escreva código mais compacto e funcional ao passar comportamento como argumento para métodos.
(parametros) -> { corpo }
->
: Separa os parâmetros do corpo da expressão.Sem lambda:
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Executando uma thread");
}
};
Com lambda:
Runnable r = () -> System.out.println("Executando uma thread");
Principais Usos das Expressões Lambda
Elas eliminam a necessidade de criar classes anônimas para implementar interfaces funcionais.
Exemplo: Ordenando uma lista de strings. Sem lambda:
List<String> nomes = Arrays.asList("Ana", "Bruno", "Carlos");
Collections.sort(nomes, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
Com lambda:
List<String> nomes = Arrays.asList("Ana", "Bruno", "Carlos");
nomes.sort((o1, o2) -> o1.compareTo(o2));
As expressões lambda são essenciais para a manipulação declarativa de coleções com Streams.
Exemplo: Filtrar e mapear uma lista.
List<String> nomes = Arrays.asList("Ana", "Bruno", "Carlos");
nomes.stream()
.filter(nome -> nome.startsWith("A"))
.map(String::toUpperCase)
.forEach(System.out::println);
Usando lambdas, você pode passar comportamentos como argumentos para métodos.
Exemplo: Criando um botão com ação.
Button button = new Button("Clique Aqui");
button.setOnAction(event -> System.out.println("Botão clicado!"));
Referências de Métodos e Construtores
As expressões lambda podem ser simplificadas ainda mais com referências de métodos e construtores, utilizando a sintaxe ::
.
Consumer<Integer> printer = System.out::println;
printer.accept(10); // Imprime: 10
List<String> nomes = Arrays.asList("Ana", "Bruno", "Carlos");
nomes.forEach(System.out::println);
Supplier<List<String>> listSupplier = ArrayList::new;
List<String> lista = listSupplier.get();
Boas Práticas com Lambdas
Use Lambdas Apenas para Interfaces Funcionais: Certifique-se de que a interface tem apenas um método abstrato.
Prefira Referências de Métodos: Sempre que possível, substitua lambdas por referências de métodos para maior clareza.
Evite Lambdas Muito Longos: Divida expressões complexas em métodos auxiliares para melhorar a legibilidade.
Escolha Nomes Significativos para Parâmetros: Mesmo que não sejam obrigatórios, nomes claros ajudam a entender o propósito da expressão.
As expressões lambda trouxeram uma nova era de programação funcional ao Java, simplificando tarefas repetitivas e reduzindo a verbosidade do código. Com elas, é possível escrever programas mais elegantes, concisos e fáceis de manter. Aproveite as lambdas para transformar a maneira como você desenvolve seus aplicativos Java!