Java · Intermediário · Inglês · Técnico
groupingBy
Coletor que agrupa os elementos de um stream num Map, usando uma função de classificação como chave, com valores em lista ou agregados.
Onde usar
Aparece em relatórios: agrupar vendas por cliente ou contar por status. Combina com counting() e summingInt().
Em código
var p = List.of("sol", "mar", "terra");
var porTam = p.stream().collect(
Collectors.groupingBy(String::length));
System.out.println(porTam);
// {3=[sol, mar], 5=[terra]}Exemplos
Group the orders by customer with groupingBy.
Agrupe os pedidos por cliente com groupingBy.
Pass counting() as the downstream collector.
Passe counting() como coletor secundário.
Cuidado
O Map resultante é um HashMap, sem ordem previsível; para ordenar, passe uma fábrica como TreeMap::new.