Java 8 — Streams API — Português.
O recurso de Streams API no Java, reduz a quantidade de linhas necessárias para escrever código, tendo uma escrita mais limpa e de fácil entendimento.
Utilizaremos as mais variadas operações, agregações e agrupamentos com exemplos práticos que nos facilitam a vida no dia a dia.
Iremos trabalhar com 3 tipos de listas. A primeira é uma lista de inteiros, a segunda uma lista de strings e a terceira uma lista de objetos do tipo "Banda".
Lista de Inteiros
List<Integer> listaInteger = List.of(2, 7, 16, 19, 32, 1, 6, 23);
Lista de Strings
List<String> listaString = List.of("Angra", "Tim Maia", "Raimundos", "Matanza", "Ultraje a Rigor");
Lista de Bandas
List<Banda> listaBandas = List.of(
new Banda("Angra", 200, 23000, "São Paulo"),
new Banda("Tim Maia", 100, 23000, "Rio de Janeiro"),
new Banda("Raimundos", 150, 25000, "Brasilia"),
new Banda("Matanza", 340, 56000, "São Paulo"),
new Banda("Ultraje a Rigor", 45, 67000, "São Paulo"));
Exemplos práticos
Agora daremos início aos exemplos para diversas situações. O código fonte pode ser encontrado completo no github.
Distinct
Coletar valores distintos caso haja duplicados.
Limit
Coletando valores limitando a apenas 2 números.
Skip
Pular os dois primeiros valores e retornar os demais.
Maiúsculas
Retornando uma lista de strings com os valores maiúsculos
Tamanho
Retornando o tamanho de cada banda
Ocorrências
Alguma ocorrência
Procura na lista de bandas se alguma delas é da cidade de São Paulo.
Todas ocorrências
Procura na lista de bandas se todas elas pertencem a São Paulo.
Nenhuma ocorrência
Procura se de todas as bandas da lista, nenhuma delas pertencem ao Acre.
Primeira ocorrência
Retornar a primeira ocorrência.
Soma
Somar o faturamento de todas as bandas juntas.
Menor
Retorna o menor faturamento entre as bandas.
Maior
Retorna o maior faturamento entre as bandas.
Enviando o resultado para uma Collection
Lista
Coletando o nome de todas as bandas para uma nova lista.
Set
Coletando o nome de todas as cidades para um Set. Veja que devido a característica dessa estrutura de dados, os nomes não se repetem.
Agregação
Contagem
Contar quantas bandas tiveram mais de 100 discos lançados.
Menor Faturamento
Retornar o objeto com a banda que obteve o menor faturamento da lista.
Maior Faturamento
Retornar o objeto com a banda que obteve o maior faturamento da lista.
Média de Faturamento
Retornar a média de faturamento de cada banda.
Agrupamento
Cidade
Agrupar todas as bandas por cidade.
Faturamento
Agrupar o faturamento de todas as bandas por cidade.
Obrigado pela leitura.
Exemplo completo no Github:
Referências:
https://www.oracle.com/br/technical-resources/articles/java-stream-api.html
https://medium.com/javarevisited/stream-api-most-useful-operations-28e3988002d0