코틀린 컬렉션 함수 - 2 (map, flatMap)

상상코딩·2021년 12월 20일
0

코틀린

목록 보기
2/5
post-thumbnail

map, flatMap은 역할이 상당히 유사하다. 어떤 컬렉션을 다른 형태로 변형시켜주는 함수이다.
flatMap으로 하는 일을 map으로도 할 수 있다. 조금 복잡해 질 뿐!

Map

단일 스트림 안의 요소를 원하는 특정 형태로 변환

FlatMap

스트림의 형태가 배열과 같을 때, 모든 원소를 단일 원소 스트림으로 반환할 수 있다.

map을 한 후 .flatten()을 호출 한 것과 결과가 같다.

Iterable의 각 요소의 단위를 지켜야 하는 경우 Map, 그 요소의 단위를 해체하고 싶은 경우 FlatMap을 쓰면 될 것 같다!

예를 들어, 아래 그림에서,,
map을 적용한 이후에는 [Hello] -> [H,e,l,l,o] 이렇게 단위를 유지하면서 내부 transform을 진행했다면,
flatMap을 적용한 이후에는 저 단위가 없어지고(flat해지고) H,e,l,l,o... 요소 각각에 대해 접근하고 있다.

차이를 나타내주는 예제!

val financeList = listOf(bankList, cardList)
val manufacturerList = financeList.flatMap {
     it
}.map {
     it.name
}

은행거래리스트와 카드거래리스트를 합쳐 flat 한 리스트를 만들고 그 중 이름만 뽑음.

profile
히히낙낙

0개의 댓글