더북(TheBook)

08
리덕션 연산

합계를 계산하거나 스트림의 요소들을 다른 방법으로 결합하고 싶은 경우, reduce 메서드들 중 하나를 사용할 수 있다. 가장 단순한 형태는 이항 함수binary function를 받아서 처음 두 요소부터 시작하여 계속해서 해당 함수를 적용한다. 합계 함수라면 설명하기 쉽다.


Stream<Integer> values = ...;

Optional<Integer> sum = values.reduce((x, y) -> x + y);


 

이 경우 reduce 메서드는 V0 + V1 + V2 + ...을 계산하며, 여기서 Vi 는 스트림 요소들을 나타낸다. 이 메서드는 스트림이 비어 있는 경우 유효한 결과가 없으므로 Optional을 리턴한다.

 

<Note>

이 예제에서 values.reduce((x, y) -> x + y) 대신 values.reduce(Integer::sum)을 사용할 수도 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.