collect()
메서드로 Collector 인터페이스 구현을 전달 했다.Collectors.toList())
: 각 요소를 리스트로 만들어라Collectors.groupingBy(Transaction::getCurrency)
: 각 키와 각 키에 대응하는 요소 리스트를 값으로 포함하는 Map을 만들어라훌륭하게 설계된 함수형 API의 또 다른 장점 : 높은 수준의 조합성과 재사용성
collect()
호출 → 스트림의 요소에 리듀싱 연산 수행 (내부적 리듀싱 연산)
출처 : 모던 자바 인 액션
Collector
인터페이스의 메서드를 어떻게 구현하느냐에따라 스트림에 어떤 reducing 연산이 수행될지 결정된다.
Collectors
유틸리티 클래스는 자주 사용하는 Collector
인스턴스를 손쉽게 생성할 수 있는 정적 팩토리 메서드를 제공한다.
groupingBy()
같이 Collectors
클래스에서 제공하는 팩토리 메서드의 기능
Long collect = transactions.stream().collect(Collectors.counting());
Long collect = transactions.stream().count();