Dica de Código: Expressões Lambda em Java \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 15 Horas 

 49 Min 

 19 Seg 

   Tempo restante da oferta: 15 49 19 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Dica de Código: Expressões Lambda em Java  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) [ Dica de código ](https://www.treinaweb.com.br/blog/categoria/dica-de-codigo) 

# Dica de Código: Expressões Lambda em Java

 Aprenda como as expressões lambda simplificam o código Java ao criar instâncias de interfaces funcionais e veremos alguns exemplos de uso.

 [ Cleyson Lima ](https://www.treinaweb.com.br/blog/autor/cleyson-lima) 3 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1.jpg)  

As expressões lambda são uma característica poderosa do Java que permite criar instâncias de interfaces funcionais de forma concisa e simplificada. Além disso, podemos reduzir a quantidade de código necessário para criar e implementar interfaces funcionais utilizando expressões lambda.

Neste artigo, vamos explorar o uso de expressões lambda no contexto das interfaces funcionais em Java. Vamos começar definindo uma interface funcional e mostrando como criar uma instância dessa interface utilizando uma classe anônima. Em seguida, iremos introduzir as expressões lambda como uma forma mais simplificada de alcançar o mesmo resultado.

## Interfaces Funcionais

[  ![Java - Stream API](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/java.svg)   Curso Java - Stream API Conhecer o curso ](https://www.treinaweb.com.br/curso/java-stream-api)

Antes de mergulharmos nas expressões lambda, precisamos entender o conceito de interfaces funcionais. Primeiramente, uma interface funcional é aquela que contém apenas um método abstrato. Portanto, ao utilizar expressões lambda, podemos reduzir a quantidade de código necessário para criar e implementar interfaces funcionais.

Vamos considerar a interface funcional `Calculadora` como exemplo. Essa interface possui apenas um método abstrato chamado `calcular`. Além disso, é recomendado utilizar a anotação `@FunctionalInterface` para identificar claramente uma interface funcional.

```java
@FunctionalInterface
interface Calculadora {
    int calcular(int a, int b);
}

public class ExemploLambda {

    public static void main(String[] args) {
        /*
         * Podemos criar uma instância da interface 
         * Calculadora usando uma classe anônima.
         */
        Calculadora somar = new Calculadora() {
            @Override
            public int calcular(int a, int b) {
                return a + b;
            }
        };

        /*
         * Usa a instância da interface Calculadora 
         * para calcular a soma de dois números.
         */
        int resultado = somar.calcular(2, 3);
        System.out.println(resultado); // Imprime 5
    }
}

```

## Expressões Lambda

Agora que compreendemos o conceito de interfaces funcionais, podemos explorar as expressões lambda. De fato, as expressões lambda permitem criar instâncias de interfaces funcionais de maneira concisa e legível. Consequentemente, tornam o código mais limpo e de fácil compreensão.

Para simplificar o código do exemplo anterior, podemos substituir a implementação da interface funcional `Calculadora` utilizando uma expressão lambda. Nesse caso, a expressão lambda será equivalente à classe anônima criada anteriormente.

```java
@FunctionalInterface
interface Calculadora {
    int calcular(int a, int b);
}

public class ExemploLambda {

    public static void main(String[] args) {
        Calculadora somar = (int a, int b) -> a + b;

        /*
         * Usa a instância da interface Calculadora
         * para calcular a soma de dois números
         */
        int resultado = somar.calcular(2, 3);
        System.out.println(resultado); // Imprime 5
    }
}

```

Em suma, uma expressão lambda consiste em três partes:

1. A lista de parâmetros;
2. O símbolo `->`;
3. O corpo da expressão.

No exemplo acima, utilizamos `(int a, int b)` como lista de parâmetros e `a + b` como corpo da expressão.

## Exemplos de Uso

As expressões lambda são especialmente úteis ao trabalhar com coleções, em conjunto com a Stream API. A seguir, apresentamos exemplos práticos do uso de expressões lambda para filtrar uma lista de strings e transformar uma lista de números.

Para filtrar uma lista de strings, podemos utilizar uma expressão lambda como predicado no método `filter` da Stream API.

```java
import java.util.List;
import java.util.stream.Collectors;

public class ExemploLambda {

    public static void main(String[] args) {
        // Cria uma lista de strings
        List nomes = List.of(
            "Maria",
            "João",
            "Pedro",
            "Ana",
            "Lucas"
        );

        // Filtra os nomes que começam com a letra "M"
        List nomesComM = nomes.stream()
            .filter(nome -> nome.startsWith("M"))
            .collect(Collectors.toList());

        System.out.println(nomesComM); // Imprime [Maria]
    }
}

```

Nesse caso, a expressão lambda `nome -> nome.startsWith("M")` é passada como parâmetro para o método `filter`. Essa expressão é equivalente a uma instância da interface funcional `Predicate`, que contém o método abstrato `test` que recebe um parâmetro e retorna um boolean.

Outro exemplo de uso de expressões lambda é para transformar cada elemento de uma lista de números em seu quadrado, utilizando o método `map` da Stream API.

```java
import java.util.List;
import java.util.stream.Collectors;

public class ExemploLambda {

    public static void main(String[] args) {
        // Cria uma lista de números inteiros
        List numeros = List.of(1, 2, 3, 4, 5);

        // Transforma cada número em seu quadrado usando uma expressão lambda
        List quadrados = numeros.stream()
            .map(numero -> numero * numero)
            .collect(Collectors.toList());

        System.out.println(quadrados); // Imprime [1, 4, 9, 16, 25]
    }
}

```

Nesse exemplo, a expressão lambda `numero -> numero * numero` é utilizada como parâmetro para o método `map`. Essa expressão é equivalente a uma instância da interface funcional `Function`, que contém o método abstrato `apply` que recebe um parâmetro e retorna um valor.

## Conclusão

Em conclusão, as expressões lambda são uma ferramenta poderosa para tornar o código Java mais conciso e legível. Além disso, elas permitem criar instâncias de interfaces funcionais de forma simplificada, facilitando o trabalho com coleções e a Stream API. Com o conhecimento adquirido neste artigo, você estará preparado para utilizar expressões lambda em seus projetos Java, melhorando a qualidade e eficiência do seu código.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/BANNER-BLOG-2-2.jpg) ](https://api.whatsapp.com/send/?phone=5544988609539&text=Olá,+li+o+artigo+no+blog+e+gostaria+de+saber+mais+sobre+a+TreinaWeb.)

- [ #Java ](https://www.treinaweb.com.br/blog/tag/java)
- [ #dica de código ](https://www.treinaweb.com.br/blog/tag/dica-de-codigo)
- [ #dica de código java ](https://www.treinaweb.com.br/blog/tag/dica-de-codigo-java)
- [ #stream api ](https://www.treinaweb.com.br/blog/tag/stream-api)
- [ #lambda expression ](https://www.treinaweb.com.br/blog/tag/lambda-expression)
- [ #expressões lambda ](https://www.treinaweb.com.br/blog/tag/expressoes-lambda)

Autor

 ![Cleyson Lima](//secure.gravatar.com/avatar/db30efb102ffa5d5204cebe12060b111?d=mm)

## Cleyson Lima

 Professor, programador, fã de One Piece e finge saber cozinhar. Cleyson é graduando em Licenciatura em Informática pelo IFPI - Campus Teresina Zona Sul, nos anos de 2019 e 2020 esteve envolvido em vários projetos coordenados pela secretaria municipal de educação da cidade de Teresina, onde o foco era introduzir alunos da rede pública no mundo da programação e robótica. Hoje é instrutor dos cursos de Spring na TreinaWeb, mas diz que seu coração sempre pertencerá ao Python. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/cleyson-lima)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-TS-400x280.jpg)  [ Dica de código ](https://www.treinaweb.com.br/blog/categoria/dica-de-codigo) 

     3 anos atrás

    ##  [ Dica de Código: Métodos para trabalhar com arrays em TypeScript ](https://www.treinaweb.com.br/blog/dica-de-codigo-metodos-para-trabalhar-com-arrays-em-typescript) 

     Desvende os segredos dos arrays em JavaScript! Aprenda métodos poderosos para manipulação eficiente. Torne-se um mestre na arte do desenvolvimento.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Programação Assíncrona com CompletableFuture no Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-programacao-assincrona-com-completablefuture-no-java) 

     Domine a programação assíncrona com CompletableFuture no Java e impulsione o desempenho de sua aplicação. Leia agora!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-PHP-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     3 anos atrás

    ##  [ Dica de Código: Enums no PHP ](https://www.treinaweb.com.br/blog/dica-de-codigo-enums-no-php) 

     Descubra como os enums no PHP podem transformar seu código, tornando-o mais claro e eficiente. Otimize seu código agora!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-PHP-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     3 anos atrás

    ##  [ Dica de Código: Propriedades Somente Leitura no PHP ](https://www.treinaweb.com.br/blog/dica-de-codigo-propriedades-somente-leitura-no-php) 

     Descubra como utilizar as propriedades somente leitura no PHP 8.1 para criar código mais seguro e confiável.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Principais coleções do Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-principais-colecoes-do-java) 

     Explore as poderosas ferramentas do Java Collections Framework: List, Set e Map. Domine a manipulação de dados com eficiência!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-TS-400x280.jpg)  [ Dica de código ](https://www.treinaweb.com.br/blog/categoria/dica-de-codigo) 

     3 anos atrás

    ##  [ Dica de Código: Utilizando Enums com TypeScript ](https://www.treinaweb.com.br/blog/dica-de-codigo-utilizando-enums-com-typescript) 

     Desvende o poder dos Enums em TypeScript: código mais claro e robusto! Simplifique switch cases e reforce tipagem de objetos. Confira!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-PHP-400x280.jpg)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     3 anos atrás

    ##  [ Dica de Código: Arrow Functions no PHP ](https://www.treinaweb.com.br/blog/dica-de-codigo-arrow-functions-no-php) 

     Aprenda a usar Arrow Functions no PHP para tornar seu código mais conciso e poderoso. Confira exemplos práticos e dicas essenciais.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-HTML-CSS-400x280.jpg)  [ CSS ](https://www.treinaweb.com.br/blog/categoria/css) 

     3 anos atrás

    ##  [ Dica de Código: Conheça a propriedade CSS text-decoration ](https://www.treinaweb.com.br/blog/dica-de-codigo-conheca-a-propriedade-css-text-decoration) 

     Descubra o poder da propriedade CSS text-decoration: estilos únicos para seus textos front-end! Explore posições, estilos e personalizações!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-TS-400x280.jpg)  [ Dica de código ](https://www.treinaweb.com.br/blog/categoria/dica-de-codigo) 

     3 anos atrás

    ##  [ Dica de Código: Desestruturação em TypeScript ](https://www.treinaweb.com.br/blog/dica-de-codigo-desestruturacao-em-typescript) 

     Aprenda como a desestruturação em TypeScript simplifica o código e torna-o mais legível. Técnica essencial para desenvolvedores!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Trabalhando com Data e Hora no Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-trabalhando-com-data-e-hora-no-java) 

     Nessa dica de código veremos como podemos trabalhar com data e hora no Java, para isso veremos as classes do pacote java.time.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/temas-wordpress-400x280.jpg)  [ WordPress ](https://www.treinaweb.com.br/blog/categoria/wordpress) 

     10 anos atrás

    ##  [ Personalizar temas Wordpress sem alterar o código-fonte ](https://www.treinaweb.com.br/blog/personalizar-temas-wordpress-sem-alterar-o-codigo-fonte) 

     O Wordpress é o CMS mais usado do mundo. Veja algumas dicas sobre como personalizar seu site/blog utilizando temas premium.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/instalacao-do-vs-code-no-windows-linux-e-macos-400x280.png)  [ Ferramentas ](https://www.treinaweb.com.br/blog/categoria/ferramentas) 

     6 anos atrás

    ##  [ VS Code - O que é e por que você deve usar? ](https://www.treinaweb.com.br/blog/vs-code-o-que-e-e-por-que-voce-deve-usar) 

     O VS Code é um dos editores de código mais utilizados no mundo. Conheça melhor essa ferramenta e entenda o motivo de sua popularidade.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **15h 49min 19s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
