groupingBy는 key bucket마다 downstream collector를 실행한다

group을 만든 뒤 별도 loop로 변환하지 않아도 bucket 안의 집계를 한 collector 계약으로 표현할 수 있습니다.

groupingBy<K,A,D>classifier + downstream

classifier

T→K

toList

K→List<T>

counting

K→Long

mapping

T→R 후 collect

reducing

bucket 축약

핵심: classifier와 downstream의 입력·결과 타입을 분리해 읽습니다.