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()emap(), são intermédias. Elas não são executadas até que uma operação terminal, comocollect()ouforEach(), 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]