04. 스트림 소개
#
4.1 스트림이란 무엇인가#
Java8 스트림 특징- 선언형: 더 간결하고 가독성이 좋아짐
- 조립할 수 있음: 유연성이 좋아짐
- 병렬화: 성능이 좋아짐
#
단점- 스트림 연산은 비싸다
#
4.2 스트림 시작하기스트림이란 '데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소' 로 정의할 수 있음
#
4.3 스트림과 컬렉션- 데이터를 언제 계산하는가
- 컬렉션은 모든걸 메모리에 올려야함
- 스트림은 요청할 때만 요소를 계산하는 고정된 자료구조
- 스트림은 한 번만 탐색할 수 있다.
- 스트림을 재사용할 순 없음
#
외부반복 내부반복- 외부반복 (컬렉션): 사용자가 직접 요소를 반복해야함
- 내부반복 (스트림): 어떤 작업을 수행할지만 알려주면 알아서 내부적으로 처리하고 저장함
#
4.4 스트림 연산- 중간 연산 (intermediate operation)
- filter, map, limit 같이 스트림 중간 처리과정을 연결하는 연산
- 최종 연산 (terminal operation)
- collect와 같이 스트림을 닫는 연산
#
중간 연산- 최종 연산을 실행하기 전까지는 아무 연산도 수행되지 않음
- 쇼트서킷: limit 과 같은 연산 (5장)
- 루프 퓨전: filter, map은 서로 다른 연산이지만 한과정으로 병홥됨
- filter, map, limit, sorted, distinct 등이 있음
#
최종 연산- 스트림 파이프라인에 결과를 도출
- forEach, count, collect 와 같은 연산이 있음
#
스트림 이용과정- 질의를 수행할 데이터 소스
- 스트림 파이프라인을 구성할 중간 연산 연결
- 스트림 파이프라인을 실행하고 결과를 만들 최종연산
#
4.6 마치며- 스트림은 소스에서 추출된 연속 요소, 데이터 처리 연산을 지원
- 스트림은 내부 반복을 지원
- 스트릠은 중간 연산과 최종 연산으로 이루어져 있음
- 스트림의 요소는 요청할 때 게으르게 계산됨 (최종 연산 전까진 중간 연산이 수행되지 않음 등)