(Java8) 리듀싱(Reduce)


1. 요소의 합

int sum = numbers.stream().reduce(0, (a, b) -> a + b);

int  product = numbers.stream().reduce(1, (a,b) -> a * b);

* 초기값 없음

Optional<Integer> sum = numbers.stream().reduce((a, b) -> a+ b);


2. 최댓값과 최솟값

Optional<Integer> max = numbers.stream().max(Integer::max);

Optional<Integer> min = numbers.stream().min(Integer::min);


Q) 스트림의 요리갯수를 계산하시오.


스트림의 각 요소를 1로 매핑한 다음 reduce로 이들의 합을 계산하는 방식으로 문제를 해결할 수 있다.

int count = menu.stream()
.map(d -> 1)
.reduce(0, (a, b) -> a +b);



댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬