자바/스트림

스트림의 중간 연산(3)

백_곰 2022. 4. 14. 17:27

1.  flatMap() - Stream<T[]>를 Stream<T>로 변환

- 스트림의 요소가 배열이거나 map()의 연산결과가 배열인 경우, 즉 스트림 타입이

Stream<T[]>라면, Stream<T>로 바꿀 때, flatMap()을 사용한다.

 

 

- 아래의 예시를 한번 보자.

( Stream<String>을 만들어주기 위해 Arrays.stream(T[])를 사용했다. )

( 그러나, map() 사용하여 변환해 주었더니, Stream<Stream<String>>의 형태가 되었다. ) 

( 이렇게 되면, 우리가 원하는 Stream<String>으로 못 만들어준다. )

 

 

( 그러므로, 위에서 말한대로 flatMap() 메서드를 이용해서, 아래와 같은 형태를 만들어야 한다. )

 

 

 

 

1-1. flatMap()을 이해하는 예제(1)

: map() 대신 flatMap()을 사용하여 Stream<String> 구조로 만들어 준 예제이다.

 

 

 

 

 

1-2. flatMap()을 이해하는 예제(2)

: Stream<Stream<String>> Stream<String[]>으로  map()을 사용하여 변환 후, Stream<String>으로

flatMap()을 사용하여 변환하는 예제이다.

 

 

( map()으로 변환해줄 때는 String[] 배열을 생성하여 반환해주어야 한다. )

( 그런 다음, flatMap()을 사용하여 다시 Stream<String>으로 변환한다. )