Collectors에서 제공하는 메서드의 기능은 크게 세 가지로 구분할 수 있다.
- 스트림 요소를 하나의 값으로 리듀스하고 요약
- 요소 그룹화
- 요소 분할
리듀싱과 요약
counting
개수 카운팅1
2
3
4long howManyDishes = menu.stream().collect(Collectors.counting());
// 이렇게도 가능하다..
menu.stream().count();
maxBy / minBy
Comparator를 인수로 받아 최대값, 최소값을 구한다.1
2
3Comparator<Dish> dishCaloriesComparator = Comparator.comparingInt(Dish::getCalories);
Optional<Dish> mostCalorieDish = menu.stream().collect(maxBy(dishCaloriesComparator));
summing[Int/Long/Double]
합계를 계산한다1
int totalCalories = menu.stream().collect(summingInt(Dish::getCalories));
averaging[Int/Long/Double]
평균을 계산한다1
double avgCalories = menu.stream().collect(averagingInt(Dish::getCalories));
summarizing[Int/Long/Double]
여러가지 요약정보가 필요할때 사용한다.
1 | IntSummaryStatistics menuStatistics = menu.stream().collect(summarizingInt(Dish::getCalories)); |
Reference : Java 8 in Action