0%

스트림 데이터 수집

Collectors에서 제공하는 메서드의 기능은 크게 세 가지로 구분할 수 있다.

  • 스트림 요소를 하나의 값으로 리듀스하고 요약
  • 요소 그룹화
  • 요소 분할

리듀싱과 요약

counting

개수 카운팅

1
2
3
4
long howManyDishes = menu.stream().collect(Collectors.counting());

// 이렇게도 가능하다..
menu.stream().count();

maxBy / minBy

Comparator를 인수로 받아 최대값, 최소값을 구한다.

1
2
3
Comparator<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
2
3
4
IntSummaryStatistics menuStatistics = menu.stream().collect(summarizingInt(Dish::getCalories));

// 출력결과
IntSummaryStatistics { count = 9, sum = 4300, min = 120, average = 1, max = 800 }

Reference : Java 8 in Action