그룹으로 묶인 요소들의 다운스트림 처리용으로 몇 가지 다른 컬렉터가 제공된다.
• counting은 모인 요소들의 개수를 센다. 예를 들어, 다음 코드는 각 국가의 로케일 개수를 센다.
Map<String, Long> countryToLocaleCounts = locales.collect(
groupingBy(Locale::getCountry, counting()));
• summing(Int|Long|Double)은 함수 인자 하나를 받아서 해당 함수를 다운스트림 요소들에 적용하고 합계를 구한다. 예를 들어, 다음 코드는 도시로 구성된 스트림에서 주별 인구의 합계를 계산한다.
Map<String, Integer> stateToCityPopulation = cities.collect(
groupingBy(City::getState, summingInt(City::getPopulation)));
• maxBy와 minBy는 비교자 하나를 받아서 다운스트림 요소들의 최댓값과 최솟값을 구한다. 예를 들어, 다음 코드는 주별로 가장 큰 도시를 구한다.
Map<String, City> stateToLargestCity = cities.collect(
groupingBy(City::getState,
maxBy(Comparator.comparing(City::getPopulation))));