스트림 모든 스트림 요소를 처리해서 값으로 도출 하는 것을 지원하는 reduce 메서드를 제공.
예제에서 사용할 숫자 객체 리스트 생성하고 각 요소들을 합산하는 예제를 작성해보았다.
List<Integer> numbers = Arrays.asList(1,2,3,4,5);
int sum = 0;
for(int t : numbers) {
sum += t;
}
결과값
15
누적 반복 연산을 하는 것을 reduce 메서드를 사용해서 간단하게 처리 가능하다.
reduce 메서드의 첫번째 인수는 초기값, 두 번째 인수는 두 요소를 조합해서 새로운 값을 만드는 BinaryOperator<T>
int sum = numbers.stream().reduce(0, (a,b) -> a+b);
결과값
15
초기값 없이 처리도 가능하나 이때 반환 값이 Optional 객체이다.
Optional<Integer> sum = numbers.stream().reduce((a, b) -> (a+b));
System.out.println(sum.get());
최댓값과 최솟값도 reduce를 사용해서 다음과 같이 쉽게 처리가 가능하다.
Optional<Integer> min = numbers.stream().reduce(Integer::min);
System.out.println(min.get());
결과값
1
Optional<Integer> max = numbers.stream().reduce(Integer::max);
System.out.println(max.get());
결과값
5
'Java > Stream' 카테고리의 다른 글
스트림 생성 (0) | 2022.10.27 |
---|---|
기본형 특화 스트림 (0) | 2022.10.27 |
검색과 매칭 (0) | 2022.10.26 |
map과 flatMap (0) | 2022.10.17 |
필터링 및 슬라이싱 (0) | 2022.10.10 |