Stream API: como diminuir a escrita do código Java

Neste artigo você vai ver:

O recurso disponível a partir do Java 8 ainda é visto por alguns desenvolvedores como algo complexo. O objetivo deste artigo é esclarecer um pouco mais sobre a interface stream com alguns exemplos práticos e simples de se reproduzir. Antes de iniciar nosso estudo com Stream API, é importante falarmos um pouco sobre programação funcional e expressões lambda. Bora?

O intuito não é aprofundar nesse assunto, mas é de extrema importância ter uma pequena introdução para entender melhor os cenários que vou mostrar e, assim, chegar no nosso objetivo.

O que é programação funcional?

É um paradigma de programação, basicamente. Assim como temos Programação orientada a Objetos (POO) ou Programação imperativa, temos a Programação Funcional. Em linguagens multi-paradigmas podemos usar POO e programação funcional.

Expressão lambda em Java

Uma expressão lambda é uma função anônima. Pensando em orientação a objetos em java, uma expressão lambda não pode ser vista como uma função pois não está associada a uma classe onde funções não podem existir fora de um objeto.

Mas na programação funcional, você pode definir funções, fornecer variáveis de referência e passá-las como argumentos de método e muito mais. Geralmente uma expressão lambda é escrita como parâmetro para uma função. 

Veja um exemplo simples:

Formula : (x) -> 10*x / 2
Recebemos um parâmetro x que será multiplicado por 10 e dividido por 2

Podemos executar desta maneira em Java:

stream api

Depois da breve introdução, vamos ao Stream API.

O que é a Stream API?

É um recurso que ajuda a manipular coleções de uma maneira simples e eficiente seguindo os princípios da programação funcional. Isso é interessante pois o controle de fluxo e loop ficam por conta  da API onde temos que nos preocupar somente com a regra do negócio.

Cenário 1

Seu cliente solicita que você some todos os números pares de uma lista e mostre o resultado.
Sem o uso de Stream:

Nesta solução percorremos todos os itens da lista usando for , verificamos se o número é par e somamos os números que forem pares na variável resultado e mostramos em tela o resultado.

Agora usando Stream API:

Nesta solução com apenas 2 linhas pegamos a lista, convertemos para Stream, usamos o método filter para filtrar elementos de uma stream com uma condição (predicado), efetuamos a transformação na lista de dados, efetuamos a soma e mostramos em tela.

Cenário 2

Seu cliente solicita todos os nomes que começam com a letra “M” de uma lista de convidados.

Sem o uso de Stream:

api

Nesta solução percorremos a lista, criamos uma variável para armazenar a primeira letra dos nomes e verificamos se essa primeira letra do nome inicia com M, se iniciar com M mostramos em tela.

Agora usando Stream API:

Nesta solução pegamos a lista lista Convidados convertemos para Stream, usamos o método filter para filtrar elementos de uma stream com uma condição (predicado), convertemos para um tipo list compatível e mostramos em tela.

Conclusão

Com Stream Api você diminui linhas de código, melhora a legibilidade, facilita a manutenção e ganha produtividade no desenvolvimento. Espero que as dicas tenham sido úteis pra você. 

Ficou com alguma dúvida no assunto? É só deixar aqui embaixo nos comentários.

Vagas em tecnologia

Aqui na Zup, nós acreditamos em profissionais fora da curva e que querem crescer exponencialmente. Você gosta de desafios? Veja nossas vagas em tecnologia.

5e8e02ed5d4b89704d950a7f_jaime-junior
Tech Lead
Apaixonado por desenvolvimento de software e sempre em busca de mais conhecimento

Artigos relacionados

Capa do artigo em foto com duas pessoas escrevendo códigos em frente a dois notebooks.
Back-End
Postado em:
Imagem capa do conteúdo sobre Framework NestJS com a foto de uma mulher de cabelos trançados de costas de frente para um computador com códigos.
Back-End
Postado em:
Imagem capa do conteúdo sobre testes unitários, onde uma pessoa branca está em pé, segurando um notebook aberto dentro de um data center.
Back-End
Postado em:

Este site utiliza cookies para proporcionar uma experiência de navegação melhor. Consulte nossa Política de Privacidade.