자바

자바 스트림 Java Stream => 기본 집계 ( sum(), count(), average(), max(), min() ) / 커스텀 집계 ( reduce() )

알통몬_ 2017. 3. 31. 21:02
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 


집계란 :

 최종 처리 기능으로써 요소들을 처리해 합계, 평균 값 같이 하나의 값으로 산출하는 것입니다.

=> 많은 양의 데이터를 가공해 출소하는 리덕션이라고 볼 수 있습니다.


스트림은 기본 집계 메소드를 제공합니다.


OptionalXXX 의 종류는 Optional, OptionalInt, OptionalLong, OptionalDouble 타입이 있고,

값을 저장하는 값 기반 클래스들입니다.

이 겍체에서 값을 얻으려면 get(), getAsDouble(), getAsInt, getAsLong()를 호출하면 됩니다.

예제)


OptionalXXX 클래스들은 저장하는 값의 타입만 다르고 제공하는 기능은 거의 같습니다.

집계값만 저장하는 것이 아니라 집계 값이 없을 경우 디폴트 값을 설정할 수도 있고, 

집계값을 처리하는 Consumer도 등록할 수 있습니다.

Optional 클래스에서 제공하는 메소드


컬렉션의 요소가 동적으로 추가되는 경우가 많습니다. 컬렉션의 요소가 추가되지 않아

저장된 요소가 없을 경우 집계 메소드를 사용할 수는 없고, 사용할게 되면 NoSuchElementException

예외가 발생하게 됩니다. 요소가 없는 경우에 예외를 피하는 방법이 세가지 있습니다.

- Optional 객체를 얻어 isPresent() 로 평균값 여부를 확인합니다.

- orElse() 로 디폴트 값을 지정합니다.

- ifPresent() 로 평균값이 있을 경우에만 값을 이용하는 람다식을 실행합니다.


예제)



스트림에서는 기본 집계 말고도 프로그램화해서 다양한 집계 결과물을 만들 수 있도록,

reduce() 도 제공합니다.


만약 스트림의 요소가 없다면 디폴트 값인 indentity 매개 값이 리턴됩니다.

예제)


이상입니다.


반응형