목차
컬렉터란 무엇인가?
고급 리듀싱 기능을 수행하는 컬렉터
- 스트림에 collect를 호출하면 스트림의 요소에(컬렉터로 파라미터화된) 리듀싱 연산이 수행된다.
http://drive.google.com/uc?export=view&id=0ByLqiEM75qEzUlV3ajNHRDNvbEE
리듀싱 연산
미리 정의된 컬렉터
- Collections에서 제공하는 메서드의 기능은 크게 세가지로 구분
- 스트림 요소를 하나의 값으로 리듀스하고 요약
- 요소 그룹화
- 요소 분할
리듀싱과 요약
스트림값에서 최댓값과 최솟값 검색
- Collections.maxBy, Collections.minBy 두 개의 메서드를 이용해서 스트림의 최댓값과 최솟값을 계산할 수 있다.
Comparator<Dish> dishCaloriesComparator =
Comparator.comparinglnt(Dish::getCalories);
Optional<Dish> mostCalorieDish =
menu.stream()
.collect(maxBy(dishCaloriesComparator));
요약 연산
- Collections 클래스는 Collections.sumingInt라는 특별한 요약 팩토리 메서드를 제공한다.
int totalCalories = menu.stream().collect(summingInt(Dish::getCalories));
- summingLong, summingDouble 등도 있다.
- 단순 합계 외의 계산 등의 연산도 요약 기능으로 제공된다.
- Collections.averagingLong, Collections.averagingDouble,Collections.averagingInt 등으로 평균을 계산할 수 있다.
- 위의 연산을 한번에 수행도 가능하다. summarizingInt으로 할 수 있다.