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.
cheat/streams
O pipeline que substitui o laço aninhado.
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.
List<String> nomes = pessoas.stream()
.map(Pessoa::nome)
.toList();Map<String, List<Pessoa>> porCidade = pessoas.stream()
.collect(Collectors.groupingBy(Pessoa::cidade));int total = itens.stream().mapToInt(Item::preco).sum();mapToInt evita o boxing que map(Item::preco) faria em cada elemento.
String csv = nomes.stream().collect(Collectors.joining(", "));List<Item> todos = pedidos.stream()
.flatMap(p -> p.itens().stream())
.toList();