스트림 소개
- SQL 질의 처럼 어떻게 필터링 할 것인지 구현 할 필요 없이 사용하는 것.
- 프로그래머가 귀중한 시간 절약, 편리한 삶을 누릴 수 있도록 자바 언어 설계자들이 내린 결정이 스트림이다.
스트림이란 무엇일까
- 스트림을 사용하면 선언형으로 데이터를 처리할 수 있다.
- 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다.
parallelStream() 이 호출 되면 어떤일이 일어나는지, 얼마나 성능이 좋은지는 7장에서 설명함
현재로서는 스트림을 사용하면
- 선언형으로 코드 구현 할 수 있다. ( e.g) 저칼로리 요리만 선택하라. ) → 간결, 가독성 up
- 여러 빌딩 블록 연산을 연결해서 복잡한 데이터 처리 파이프라인을 만들 수 있다. 여러 연산을 파이프라인으로 연결해도 여전히 가독성, 명확성 유지된다
- 조립할 수 있다 → 유연성 좋아진다.
- 병렬화 → 성능이 좋아진다.
filter 같은 연산은 고수준 빌딩 블록 (high-level building block)으로 이루어져 있으므로 특정 스레딩 모델에 제한되지 않고 자유롭게 어떤 상황에서도 사용할 수 있다 → 무슨말?
데이터 처리 과정을 병렬화하면서 스레드와 락을 걱정할 필요가 없다.
Stream API는 매우 비싼 연산이다.
[ Collection과 Stream의 차이]
컬렉션은 자료구조이므로 요소 저장 및 접근 연산이 주이다. (주제 : 데이터)
스트림은 표현 계산식 (filter, sorted, map)이 주이다. (주제: 계산)