스트림 개념
스트림 API가 제공하는 추상 개념 핵심
- 스트림은 데이터 원소의 유/무한 시퀀스를 뜻한다.
- 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표현하는 개념이다.
- 스트림의 원소들은 어디로부터든 올 수 있다
- 컬렉션, 배열, 파일, 정규표현식 패턴 매처, 난수 생성기, 다른 스트림
- 스트림 안의 데이터 원소들은 객체 참조나 기본 타입 값이다.
스트림 파이프라인
- 소스 스트림 : 시작
- 중간 연산 : 스트림을 변환함
- 종단 연산 : 최후 연산
- 원소 정렬해 컬렉션에 담기, 특정 원소 하나 선택하기, 모든 원소 출력 등
- 종단 연산이 없다면 아무 일도 하지 않는 명령어(no-op)와 같음!
스트림 파이프라인은 지연 평가(lazy evaluation)되며 평가는 종단 연산이 호출될 때 이뤄지고 종단 연산에 쓰이지 않는 데이터 원소는 계산에 쓰이지 않는다.
→ 무한 스트림 다룰 수 있게 해줌
기본적으로 스트림 파이프라인은 순차적으로 수행되며 병렬로 실행하려면 파이프라인 스트림 중 하나에서 parallel 메서드를 호출하면 된다.(효과를 볼 수 있는 상황은 많지 않음)