자바 컬렉션 클래스의 정적 Factory메소드 알아보기.

Factory method Returned Type Used to
toList List 스트림의 아이템을 list로 반환한다.
ex   List dishes = menuStream.collect(toList());
toSet Set 스트림의 아이템을 set으로 반환한다. 중복은 제거된다.
ex   Set dishes = menuStream.collect(toSet());
toCollection Collection 스트림의 아이템을 컬렉션으로 넣는다. 이는 제공된 supplier에 의해서 생성된다.
ex   Collection dishes = menuStream.collect(toCollection(), ArrayList::new);
counting Long 스트림의 아이템을 센다.
ex   long howManyDishes = menuStream.collect(counting());
summingInt Integer 스트림의 아이템의 정수 프로피터의 총 값을 계산한다.
ex   int totalCalories = menuStream.collect(summingInt(Dish::getCalories));
averagingInt Double 스트림의 아이템의 정수 프로퍼티의 평균값을 계산한다.
ex   double avgCalories = menuStream.collect(averagingInt(Dish::getCalories));
summarizingInt IntSummary-Statistics 스트림의 아이템들의 통계값을 계산한다. maximum, minimum, total, average
ex   IntSummaryStatistics menuStatistics = menuStream.collect(summarizingInt(Dish::getCalories));
joining String 스트림의 각 아이템에서 toString의 호출 결과들을 연결한다.
ex   String shortMenu = menuStream.map(Dish::getName).collect(joining(“,”));
maxBy Optional 주어진 comparator에 의해서 최대 엘리먼트를 구하여 Optional로 감싼값을 반환하거나 빈 Optional값을 반환한다.
ex   Optional fattest = menuStream.collect(maxBy(comparingInt(Dish::getCalories)));
minBy Optional 주어진 comparator에 의해서 최소 엘리먼트를 구하여 Optional로 감싼값을 반환하거나 빈 Optional값을 반환한다.
ex   Optional lightest = menuStream.collect(minBy(comparingInt(Dish::getCalories)));
reducing reducing오퍼레이션으로 생성된 타입 Binary오퍼레이터를 이용하여 누적값이나 반복적으로 연결된 값을 반환하며, 초기값에서 부터 이러한 연산을 한다.
ex   int totalCalories = menuStream.collect(reducing(0, Dish::getCalories, Integer::sum));
collectingAndthen 변환함수의 결과 타입을 반환한다. 다른 컬렉터와 변환 함수 처리된 결과를 반환한다.
ex   int howManyDishes = menuStream.collect(collectingAndThen(toList(), List:size));
groupBy Map<K, List> 스트림의 아이템들을 그루핑한다. 이는 프로퍼티중의 하나를 기준으로 그루핑되며, 결과 맵에 해당 값이 들어간다.
ex   Map<Dish.Type, List> dishesByType = menuStream.collect(groupingBy(Dish::getType));
partitioningBy Map<Boolean, List> 스트림의 아이템의 파티션을 반환한다. 이는 각각의 predicate에 따라 파티션된다.
ex   Map<Boolean, List> vegetarianDishes = menuStream.collect(partitioningBy(Dish::isVegetarian));