Pular para o conteúdo

cheat/streams

Streams

O pipeline que substitui o laço aninhado.

Consulta

Filtrar e coletar

List<Pessoa> maiores = pessoas.stream()
    .filter(p -> p.idade() >= 18)
    .toList();

toList() (Java 16+) devolve lista imutável; collect(Collectors.toList()) não garante isso.

Transformar

List<String> nomes = pessoas.stream()
    .map(Pessoa::nome)
    .toList();

Agrupar

Map<String, List<Pessoa>> porCidade = pessoas.stream()
    .collect(Collectors.groupingBy(Pessoa::cidade));

Somar

int total = itens.stream().mapToInt(Item::preco).sum();

mapToInt evita o boxing que map(Item::preco) faria em cada elemento.

Juntar em texto

String csv = nomes.stream().collect(Collectors.joining(", "));

Achatar listas aninhadas

List<Item> todos = pedidos.stream()
    .flatMap(p -> p.itens().stream())
    .toList();