A Streams API, introduzida no Java 8, traz processamento declarativo de coleções.
O que é um Stream
Um Stream é uma sequência de elementos que suporta operações agregadas. Diferente de coleções, Streams não armazenam dados, apenas os processam.
Avaliação preguiçosa
Operações intermediárias (map, filter) são lazy e só executam quando uma operação terminal é chamada. Isso permite otimizações e reduz o processamento desnecessário.
List<String> nomes = List.of("ana", "bia", "caio");String r = nomes.stream() .filter(n -> n.length() == 3) .map(String::toUpperCase) .collect(Collectors.joining(", "));Repare que nada acontece até o collect. Antes dele, o pipeline é só uma descrição do trabalho — as linhas destacadas acima compõem a etapa intermediária, avaliada apenas sob demanda. Este parágrafo existe para conferir o espaçamento logo depois da caixa de código.
Visualizando o pipeline
Um Stream pode ser lido como uma esteira: a fonte alimenta os elementos, cada operação intermediária os transforma, e a terminal coleta o resultado.
Depois da imagem o texto volta no mesmo ritmo vertical. Clicar na figura deve abri-la ampliada sobre a página; Esc ou um novo clique fecham o overlay.