스트림 활용
- Stream API 내부적으로 다양한 최적화.
- 내부 반복 뿐 아니라 코드 병렬 실행 여부도 결정할 수 있다.
Filtering
- Predicate를 인수로 받아서 일치하는 모든 요소를 포함하는 스트림을 반환한다.
Distinct
- 고유 요소로 이루어진 스트림 반환하는 메서드
- 고유 여부는 만든 객체의
hashCode
, equals
로 결정된다.
스트림 슬라이싱 (Java 9 ~)
** 질문 : sorted()
를 쓰면 filter()
대신 takeWhile()
쓰는 것이 훨씬 낫겠네?
TAKEWHILE 활용 (정렬된 stream에서 filter 역할)
- 정렬된 Collection에 사용한다. (아주 많은 요소 포함하는 큰 Stream에서 유용하다)
→ 모든 Loop 안 돌기 때문에
DROPWHILE 활용 (정렬된 stream에서 filter 반대 역할)
takeWhile()
과 정반대의 작업 수행한다.
- Predicate가 처음으로 거짓이 되는 지점까지 발견된 요소를 버린다.
Mapping