자바

자바 스트림 Java Stream => 매핑( flatMapXXX(), mapXXX() , asXXXStream(), boxed()) / 정렬(sorted())

알통몬_ 2017. 3. 30. 21:23
반응형


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

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

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

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

 


매핑메소드들 :

flatMapXXX()

asXXXStream()

boxed()

매핑 : 중간 처리의 기능으로써 스트림의 요소들을 다른 요소로 대체하는 작업을 말합니다.

스트림에서 제공하는 매핑 메소드로는 flatMapXXX(), mapXXX(), asDoubleStream(),

asLongStream(), boxed()가 있습니다.


1. flatMapXXX()

: 요소를 대체하는 복수 개의 요소들로 구성된 새로운 스트림을 리턴합니다.

스트림에서 A라는 요소가 A1 과 A2로 대체되고,  B라는 요소가 B1 과 B2로 대체된다고 할 때

새로운 스트림이 생성되게 됩니다.

예제)


2. maxXXX()

 : 요소를 대체하는 요소로 구성된 새로운 스트림을 리턴합니다.

예제)


3. asDoubleStream(), asLongStream(), boxed()

 : asDoubleStream()은 IntStream의 int 요소 또는 LongStream Long 요소를

double 요소로 타입 변환해서 DoubleStream을 생성합니다.

asLongStream()는 IntStream의 int 요소를 long 요소로 타입 변환하여

LongStream을 생성합니다.

boxed()의 경우 int, long, double 요소를 Integer, Long, Double 요소로 방싱해서 스트립을 생성합니다.

예제)


4. 정렬 sorted()

스트림은 중간 단계에서 요소를 정렬해 최종 처리 순서를 변경할 수 있습니다.


객체 요소의 경우에는 클래스가 Comparable을 구현한 요소에서만 sorted()를 호출해야 합니다.

그렇지 않으면 ClassCastException 예외가 발생합니다.


객체의 요소가 Comparable을 구현했을 때 기본 비교로 정렬하려면

- sorted();

- sorted( (a, b) -> a.compareTo(b) );

- sorted( Comparator.naturalOrder() );

위 세가지 중에 하나를 사용하시면 됩니다.


기본 비교와 반대되는 방법으로 정렬하려면

- sorted( (b, a) -> b.comparTo(b) );

- sorted( Comparator.naturalOrder() );

중 하나를 골라 사용하시면 됩니다.

객체의 요소가 Comparable을 구현하지 않았다면

Comparator를 매개값으로 가지는 sorted()를 사용하면 됩니다.


예제)


감사합니다.

다음 포스팅에서는 루핑과 매칭에 대해 공부하겠습니다.

반응형