- 스트림 API의 특징
- 배열, 컬랙션 등을 대상으로 연산을 수행한다.
- 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 만든다.
- 재사용 불가
- 자료에 대한 스트림을 생성하면 별도의 메모리 공간을 사용하므로 기존 자료를 변경하지 않는다.
- 중간 연산(필터-맵)과 최종 연산으로 구분된다.
- 중간 연산은 여러 번 적용될 수 있지만, 최종 연산은 마지막에 한 번만 적용된다.
- 최종 연산이 호출되면 중간 연산 결과가 모두 적용된다.
- 이를 지연 연산이라고 한다.
- 변수명.stream().중간 연산.최종연산 형태로 사용된다.
- 중간 연산(intermediate operation)
- 스트림 필터링 : filter(), distinct()
- filter() : 조건에 맞는 요소 출력
- distinct() : 중복 요소 제거
- 스트림 변환 : map() - 해당 스트림의 요소들을 주어진 함수에 인수로 전달하여 새로운 스트림 반환
- mapToInt, mapToLong 형태로 해당하는 데이터 타입을 반환한다.
- 스트림 제한 : limit(), skip()
- limit() : 해당 개수만큼 반환
- skip() : 해당 갯수만큼을 제외한 나머지 요소 반환
- 스트림 정렬 : sorted() - 정렬 기능
- 스트림 연산 결과 확인 : peek() - 연산 사이 결과 확인용, 디버깅 용도로 많이 사용
- 최종 연산(terminal operation)
- 요소 출력 : forEach() - 스트림의 모든 요소 출력하는 용도, 반환 타입(void)
- 요소 소모 : reduce() - 모든 요소를 소모하여 연산을 수행한 결과를 반환
- 요소 검색 : findFirst(), findAny() - 해당 스트림에서 첫 번째 요소를 참조하는 Optional 객체 반환
- findAny() : 병렬 스트림인 경우에 사용
- 요소 검사 : anyMatch(), allMatch(), noneMatch()
- anyMatch() : 해당 스트림의 일부 요소가 특정 조건을 만족할 경우 true 반환
- allMatch() : 해당 스트림의 모든 요소가 특정 조건을 만족할 경우 true 반환
- noneMatch() : 해당 스트림의 모든 요소가 특정 조건을 만족하지 않을 경우 true 반환
- 요소 통계 : count(), min(), max()
- count() : 요소의 총 개수를 long 타입 반환
- min(), max() : 가장 작은, 큰 값을 가지는 요소를 참조하는 Optional 객체 반환
- 요소 연산 : sum(), average() - 합, 평균
최근댓글