Sobes.tech
Junior

Qual é a ideia principal da API Stream em Java?

sobes.tech IA

Resposta da IA

A ideia principal da API de Streams é fornecer uma forma declarativa de processar coleções de dados. Em vez de uma abordagem imperativa iterativa com controlo explícito de ciclos e estados, os streams permitem descrever o que fazer com os dados (filtragem, transformação, agregação), deixando a implementação como fazer na API.

Conceitos-chave:

  • Imutabilidade: Os streams não modificam a fonte de dados original. As operações do stream criam novos streams ou resultados.
  • Avaliação preguiçosa: Muitas operações do stream, como filter() e map(), são intermédias. Elas não são executadas até que uma operação terminal, como collect() ou forEach(), seja chamada. Isto permite otimizar a execução.
  • Pipeline: As operações do stream podem ser combinadas num pipeline. Cada elemento passa pelo pipeline de forma sequencial ou paralela.
  • Processamento paralelo: Os streams são projetados para facilitar o processamento paralelo de dados, muitas vezes com alterações mínimas no código (parallelStream()).

Vantagens:

  • Código mais legível e expressivo para operações complexas com coleções.
  • Facilidade de paralelização.
  • Eliminação de código boilerplate associado a iterações.
// Exemplo: Filtragem e transformação de uma lista de strings
List<String> nomes = Arrays.asList("Alice", "Bob", "Charlie", "David");

List<Integer> comprimentos = nomes.stream()
                                .filter(nome -> nome.startsWith("A")) // Operação intermédia
                                .map(String::length)             // Operação intermédia
                                .collect(Collectors.toList());   // Operação terminal

// comprimentos conterá [5]