스트림 기본
스트림은 기본적으로 시작연산, 중간연산, 최종연산 세가지를 조합해서 많이 쓴다.
중간연산은 스트림을 반환하므로 여기에 이어서 메서드 체이닝이 가능하다.
스트림은 한번만 사용이 가능하다. 다시 무언가를 하고 싶다면 또다른 스트림을 생성해서 쓰면 된다.
최종연산 스트림을 사용 할 경우 그 시점에서 스트림이 종료(클로즈)되어버린다. forEach, reduce, count등..
- 시작연산 stream()으로 시작한다(스트림 생성)
- 중간연산 filter, count, map, sorted, peek 등등
- 최종연산 forEach, reduce, findFirst, findAny, anyMatch, allMatch, collect등등
실무에서 많이 쓰이니 일단 주요 메서드는 정리하자
- of 지정한 값으로부터 스트림을 생성
- count 스트림의 요소수를 리턴
- distinct 중복값 제거
- forEach 이터레이터
- filter 필터링
- concat 두개의 스트림을 붙인다
- map 스트림 요소를 변환한다
- mapToDouble 스트림 요소를 더블형으로 변환하고 DoubleStream을 리턴한다
- mapToInt 스트림 요소를 int형으로 변환하고 IntStream을 리턴한다
- mapToLong 스트림 요소를 long형으로 변환하고 LongStream을 리턴한다
- flatMap 스트림 요소를 변환하여 flat하게 한다
- allMatch 스트림의 모든 요소가 조건에 부합하는지 안하는지
- anyMatch 스트림의 요소가 하나만이라도 조건에 부합하는지 안하는지
- noneMatch 조건에 부합하지 않는지
- reduce 스트림의 요소를 집계
- sorted 스트림 요소 정렬
- collect 스트림 요소의 집계 혹은 컬렉션으로 변환
- toArray 스트림을 배열로 변환
- iterate 무한값을 반환하는 스트림을 생성
- limit 지정한 조건수 만큼 반환
- parallelStream 병렬처리 스트림
- sequential 병렬처리가 가능한 스트림에서 시퀀셜 스트림으로