여태까지 java에 사용해본 collect 메서드는 collect(toList())나 collect(groupingBy()) 정도였는데, 그마저도 제대로 코드 내부를 이해하고 사용하지 않았다.
코드를 까보면 이해하기 어려운 함수형 인터페이스들과 지네릭스 때문에 읽을 용기가 안 났었는데, 이번에 classifier, accumulator, downstream 등등의 용어를 정리해보고 Collector 인터페이스를 직접 구현해보면서 스트림 수집이 어떻게 이루어지는지 대략적으로 이해할 수 있었다.
특히 Collectors를 통해 쉽게 사용하던 코드들의 내부를 들여다보면서, 내부에 어떻게 Collector를 사용하는지 들여다보는 재미가 있었다.
듣도 보도 못한 컬렉터들이 나와서 그런지 개인적으로 조금 어려웠다. 그래도 예전에는 그냥 검색해보고 막 가져다 썼다면, 이제는 어떤식으로 동작할지 예상하면서 쓸 수 있을 거 같다. 하지만 여러 컬렉터를 중첩해서 사용하는 등의 사용법은 아직 적용하기 힘들 것 같다.
Collector 인터페이스 부분이 흥미로웠다. 스트림의 .collect()에 Collector 구현체를 넘기면 .collect()에서 Collector 인터페이스의 5가지 메서드를 어떤식으로 호출?을 하는지가 궁금한데 어떻게 찾아봐야하는지 잘 모르겠어서 찾지 못해서 아쉽다.
기간
진행자