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](https://zup.com.br/wp-content/uploads/2021/03/5e8cdad5de656eda703665ef_stream-api.png)
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:
![](https://zup.com.br/wp-content/uploads/2021/03/5e8cdb2700b67700f0b5a720_java.png)
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:
![](https://zup.com.br/wp-content/uploads/2021/03/5e8cdb4ade656ee2a93666d7_stream.png)
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](https://zup.com.br/wp-content/uploads/2021/03/5e8cdc087422cc3526932983_api.png)
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:
![](https://zup.com.br/wp-content/uploads/2021/03/5e8cdc2c5d5222ce366e6327_usando-stream-api.png)
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.