더북(TheBook)

그룹으로 묶인 요소들의 다운스트림 처리용으로 몇 가지 다른 컬렉터가 제공된다.

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)));


 

maxByminBy는 비교자 하나를 받아서 다운스트림 요소들의 최댓값과 최솟값을 구한다. 예를 들어, 다음 코드는 주별로 가장 큰 도시를 구한다.


Map<String, City> stateToLargestCity = cities.collect(

groupingBy(City::getState,

maxBy(Comparator.comparing(City::getPopulation))));


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.