Um breve papo sobre Coleções (Pt. 5) - Stream API
- #Java
Até o presente momento falamos sobre Set, List, Map, mas o que essas 3 coisas tem em comum?
A resposta é a Stream API!
Mas... O que é Stream API?
- É um Recurso que surge a partir do Java 8
- Para a manipulação de conjuntos de objetos (Set, List, Map)
- Permite várias operações (Filtragem, Classificação e Redução)
Por que usamos essa API?
- Processamento de Dados: Você pode usar a Stream API do Java para processar grandes conjuntos de dados, filtrando, classificando e manipulando dados de forma eficiente.
- Cálculos de estatísticas: Inclui métodos para calcular média, soma, mínimo e máximo de um conjunto de dados, o que pode ser útil em análises estatísticas.
- Paralelismo: Suporta processamento paralelo, o que significa que você pode processar dados em várias threads ao mesmo tempo, acelerando a execução de operações em grandes conjuntos de dados.
- Programação funcional: É baseada em programação funcional, o que significa que você pode usar lambdas e expressões de funções para trabalhar com os objetos em uma coleção, tornando o código mais conciso e fácil de ler.
A essa altura, você deve estar se perguntando. Por que usar a Stream API se eu posso fazer essas coisas via iteração?
- Ganho de eficiencia
- Torna o código mais limpo
Quais seus principais métodos?
- forEach(): Este método é usado para iterar sobre os elementos de uma coleção e executar uma ação em cada elemento.
- filter(obj -> condicional): Este método é usado para filtrar os elementos de uma coleção com base em um predicado (condicional). Ele retorna um novo stream que contém apenas os elementos que satisfazem o predicado.
- map(obj -> func(obj)): Este método é usado para transformar os elementos de uma coleção em outro tipo de elemento. Ele retorna um novo stream que contém os elementos transformados.
- collect(Collectors.{Tipo_De_Coleção}): Este método é usado para coletar os elementos de um stream em uma coleção ou outro tipo de objeto.
- distinct(Long num): Este método é usado para remover elementos duplicados de um stream.
- limit(): Este método é usado para limitar o número de elementos em um stream.
- anyMatch(obj -> condicional): Este método é usado para verificar se pelo menos um elemento de um stream satisfaz um predicado.
- noneMatch(obs -> condicional): Este método é usado para verificar se nenhum elemento de um stream satisfaz um predicado.
- reduce((T inicial,(a,b)-> Operações): Este método é usado para reduzir os elementos de uma coleção a um único valor. Ele aplica uma operação acumuladora aos elementos da coleção e retorna o resultado final.
- findFirst(): Este método retorna o primeiro elemento de um stream, ou um Optional vazio se o stream estiver vazio.
- min(Comparator.comparing(obj -> ..)): Este método é usado para encontrar o menor elemento em um stream, com base em um comparador.
- max(Comparator.comparing(obj -> ..)): Este método é usado para encontrar o maior elemento em um stream, com base em um comparador.
Bem, encerro por aqui essa série de artigos, e espero ter ajudado você em sua jornada de aprendizado.
That's All Folks!