Stream에서 Map, Filter는 stateless operation와 reduce, sum, max는 bounded의 정확한 설명은 ?

MinJee Lee·2022년 5월 13일
0

Java

목록 보기
9/10
post-thumbnail

답변 :

stateless operation(내부상태 갖지 않는 연산)란 map, filter등은 입력 스트림에서 각 요소를 받아 0 또는 결과를 출력 스트림으로 보낸다.

따라서 이들은 보통 상태가 없는 stateless operation라고 한다.

하지만 reduce,sum,max 같은 연산은 결과를 누적할 내부 상태가 필요하다. 예제의 내부 상태는 작은 값이다.

스트림에서 처리하는 요소 수와 관계 없이 내부 상태의 크기는 bounded (한정) 으로 되어 있다.

반면 sorted나 distince같은 연산은 스트림의 요소를 정렬하거나 중복을 제거하기 위해 과거의 이력을 알고 있어야 한다.

예를 들어 어떤 요소를 출력 스트림으로 추가하려면 모든 요소가 버퍼에 추가 되어있어야 한다.

따라서 데이터 스트림의 크기가 크거나 무한이라면 문제가 생길 수 있다.

이러한 연산을 stateful operation(내부 상태를 갖는 연산) 이라 한다.

출처 : 모던 자바 인 액션 chapter5 스트림 활용

0개의 댓글