O que é Stream em Java com Exemplos: Entenda de Forma Simples

Se você está se perguntando o que é stream em Java com exemplos, chegou ao lugar certo! As Streams foram introduzidas no Java 8 e se tornaram um dos recursos mais poderosos para o processamento de dados. Neste post, vamos explicar o conceito de Streams em Java e mostrar como usá-las com exemplos práticos.

O que é Stream em Java?

No Java, Stream é uma sequência de elementos que pode ser processada de maneira funcional. Ela permite realizar operações como filtragem, transformação e agregação de dados de forma mais concisa e expressiva.

Streams não armazenam dados; em vez disso, elas fornecem uma visão de dados que pode ser processada de forma eficiente. O conceito foi criado para facilitar a programação funcional em Java.

Como funciona a Stream em Java?

Quando você cria uma Stream, ela permite que você realize diversas operações em coleções, como listas ou conjuntos, sem a necessidade de manipular diretamente os elementos. Essas operações podem ser realizadas de forma sequencial ou paralela.

Aqui está um exemplo básico de como usar Stream para filtrar uma lista de números:

List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> pares = numeros.stream()
                             .filter(n -> n % 2 == 0)
                             .collect(Collectors.toList());

System.out.println(pares); // Saída: [2, 4, 6, 8, 10]

Principais operações com Stream em Java

As Streams em Java oferecem uma ampla gama de operações, que podem ser divididas em intermediárias e terminais:

Operações Intermediárias

As operações intermediárias retornam uma nova Stream e podem ser encadeadas. Exemplos de operações intermediárias incluem:

  • filter(): filtra elementos com base em uma condição.
  • map(): aplica uma transformação nos elementos.
  • sorted(): ordena os elementos.

Operações Terminais

Já as operações terminais produzem um resultado ou efeito colateral e, após serem executadas, a Stream não pode ser reutilizada. Exemplos de operações terminais:

  • collect(): coleta os elementos em uma coleção.
  • forEach(): executa uma ação para cada elemento.
  • reduce(): aplica uma operação de redução.

Veja um exemplo utilizando map() e collect():

List<String> palavras = Arrays.asList("Java", "Stream", "Exemplo");
List<String> palavrasMaiusculas = palavras.stream()
                                          .map(String::toUpperCase)
                                          .collect(Collectors.toList());

System.out.println(palavrasMaiusculas); // Saída: [JAVA, STREAM, EXEMPLO]

Quando usar Streams em Java?

O uso de Streams é ideal quando você deseja realizar operações de forma declarativa, sem a necessidade de loops explícitos. Elas são especialmente úteis para trabalhar com grandes volumes de dados e podem ser executadas de maneira paralela, melhorando o desempenho em processamentos pesados.

Vantagens de usar Stream em Java

  • Código mais legível: O código usando Streams é mais compacto e fácil de entender.
  • Desempenho aprimorado: Ao usar Streams paralelas, você pode aproveitar o poder de múltiplos núcleos de processador.
  • Programação funcional: Permite escrever código funcional no estilo do Java.

Para entender melhor como o uso de Streams pode beneficiar seu código, confira nosso post sobre Programação Funcional em Java.

Link externo relevante

Para mais detalhes sobre o uso de Streams, consulte a documentação oficial da Oracle sobre Streams em Java.


Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *