자바

자바 스트림 Java Stream => 스트림의 특징

알통몬_ 2017. 3. 30. 10:09
반응형


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

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

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

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

 


스트림이란?

2017/03/27 - [자바] - 자바 스트림 Java Stream - 스트림이란?, 반복자 스트림



이번 포스팅에서는 스트림의 특징에 대해 공부하겠습니다.


Stream은 Iterator와 비슷한 역할을 하는 반복자인데요.

람다식으로 요소 처리 코드를 제공한다는 점과 내부 반복자를 사용하기 때문에

병렬 처리가 쉽다는 점, 중간 처리와 최종 처리 작업을 수행하는 점에서

많은 차이를 가지고 있습니다.


특징 1 -> 람다식으로 요소 처리 코드를 제공한다.

=> 스트림이 제공하는 대부분의 요소 처리 메소드들은 함수적 인터페이스 매개 타입을

가지기 때문에 람다식이나 메소드 참조를 이용해 요소 처리 내용을 매개값으로

전달할 수 있다.

예제)


특징2 : 내부 반복자를 사용하기 때문에 병렬처리가 용이하다.

외부 반복자는 개발자가 코드로 직접 컬렉션의 요소를 가져오는 코드 패턴으로

index를 이용하는 for문이나 Iterator를 이용하는 while문은 모두 외부 반복자인데요.

내부 반복자는 컬렉션의 내부에서 요소들을 반복시키고, 개발자는 요소 당 처리해야 할

코드만 제공하는 코드 패턴일 이야기합니다.


내부 반복자의 장점은 컬렉션 내부에서 어떻게 요소를 반복시킬지는 컬렉션에게 맞기고

개발자는 요소 처리 코드에만 집중할 수 있다는 것입니다.

내부 반복자의 경우 병렬 작업을 할 수 있도록 도와주기 때문에 하나씩 처리하는

순차적인 외부 반복자 보다 효율적으로 반복시킬 수 있습니다.


Iterator의 경우 컬렉션의 요소를 가져오는 것부터 처리까지 개발자가 모두 작성해야 하지만

스트림은 람다식으로 요소 처리 내용을 전달만 하고 반복은 컬렉션의 내부에서 일어납니다.

스트림을 이용하면 코드가 간결해지고 요소의 병렬 처리가 컬렉션 내부에서 처리되기 때문에

좋습니다.

병렬 처리란 => 하나의 작업을 서브 작업으로 분할하고, 서브 작업들을 분리된 스레드에서

병렬적으로 처리하는 것을 말합니다.

병렬 처리 스트림을 이용하게 되면 런타임 시에 하나의 작업을 자동으로 서브 작업으로

나누고 서브 작업의 결과를 자동으로 결합해 최종 결과물을 생성합니다.


순차 처리와 병렬 처리의 차이 예제



특징3 : 중간 처리와 최종 처리를 할 수 있다.

스트림에서는 중간 처리와 최종 처리라는 것이 있는데요.

중간 처리에서는 매핑, 필터링, 정렬 작업을 수행하고,

최종 처리에서는 반복, 카운팅, 평균, 총합 등의 집계 처리 작업을 수행합니다.


예제)


이상입니다.

다음 포스팅부터는 스트림의 종류에 대해 공부하겠습니다.

반응형