Extending Functional Pipeline with Gatherers by Venkat Subramaniam
- Java Stream API의 핵심인 '컬렉션 파이프라인 패턴'은 데이터 흐름을 함수 체인으로 처리하는 방식입니다. 🔗
- 명령형(데이터 변이)과 함수형(데이터 변환) 스타일을 비교하며, 함수형 스타일이 더 간결하고 가독성이 높음을 보여줍니다. 🔄
- Unix 파이프라인(cat | grep | awk | wc)처럼, 함수형 파이프라인은 필터, 맵, 리듀스 같은 함수들의 연속적인 적용으로 데이터를 처리합니다. 💻
- 함수형 파이프라인은 문제 해결 과정에서 발생하는 '우발적 복잡성'을 줄이고, 코드가 문제 설명처럼 읽히게 하여 이해도를 높입니다. ✨
- 효율적인 함수형 프로그래밍을 위해 함수 구성과 함께 '지연 평가(Lazy Evaluation)'가 필수적입니다. 이는 불필요한 중간 컬렉션 생성을 막아 성능을 최적화합니다. ⏳
- 스트림은 파이프라인의 함수들을 하나의 복합 함수로 '융합'하고, 이 복합 함수를 필요할 때만 최소한으로 실행합니다. 🚀
findFirst()와 같은 최종 연산은 첫 번째 일치하는 요소를 찾자마자 파이프라인 실행을 중단하여 불필요한 계산을 방지하는 지연 평가의 핵심 예시입니다. 🎯
filter, map 같은 중간 연산은 지연되며, sum, findFirst 같은 최종 연산이 호출될 때 비로소 실행이 트리거됩니다. 🚦
peek() 함수는 디버깅 목적으로 파이프라인을 통해 흐르는 데이터를 엿볼 수 있게 해주며, 지연 평가의 동작을 시각적으로 확인하는 데 유용합니다. 🕵️