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();