Java Stream API는 데이터 원소에 필터·변환·집계 연산을 연결하는 처리 API이다. 스트림 자체는 원소를 보관하는 컬렉션이 아니다.
원리
소스에서 시작해 중간 연산을 연결하고 최종 연산으로 결과를 얻는다. 많은 중간 연산은 지연 평가되며 순차 또는 병렬 처리 방식이 있다.
Java 실행과 API |
|---|
JVM · javac · Java 바이트코드 · Java 가비지 컬렉션 · Java 제네릭 |
Java 인터페이스 · Java 예외 처리 · Java Stream API · Java Optional · Java 리플렉션 |
예시
주문 목록에서 완료된 주문만 filter하고 금액으로 변환한 뒤 합계를 계산하는 흐름을 하나의 파이프라인으로 표현할 수 있다.
주의할 점
스트림은 재사용 가능한 저장소가 아니다. 원본 자료 변경과 부수 효과를 피하고 parallel이 언제나 빠르다고 가정하지 않으며 순서와 연산 결합 조건을 확인한다.