[Kotlin] map, flatmap

Chloe Choi·2021년 5월 18일
0

Kotlin

목록 보기
9/11

코틀린 map, flatmap의 차이점을 알아보자!

map

inline fun <T, R> Iterable<T>.map(
    transform: (T) -> R
): List<R>

오리지널 컬렉션의 각 요소에 지정된 변환 함수를 적용한 결과를 각각 요소로 한 리스트를 반환

  • 배열의 각 요소를 순회하며 그 요소를 저장, 조작한 요소들을 담은 배열 리턴
  • 1대1 매핑을 의미

flatmap

inline fun <T, R> Iterable<T>.flatMap(
    transform: (T) -> Iterable<R>
): List<R>

오리지널 컬렉션의 각 요소에 대해 호출되는 변환 함수의 결과에서 생성된 모든 요소의 단일 리스트를 반환

  • 즉, 요소가 배열이라면 그 내부적으로 순회하며 하나의 배열을 리턴(iterable을 평평하게 해줌)
  • 1대1 매핑인 map과 달리 flatmap은 1대1 뿐만 아니라 1(요소)대다(결과배열) 매핑이 가능
  • map(), flatten()의 조합
  • 예시
val list = listOf("123", "45")
println(list.flatMap { it.toList() }) // [1, 2, 3, 4, 5]
  • 즉, 매핑함수를 통해 각 요소에 대해 map을 수행 후, 결과를 flatten to 새로운 배열 👉 single list를 리턴

map, flatmap 같이 사용

목적: vehicle list의 manufacturers만 필요

val vehicles = listOf(cars, bikes)
val manufacturerList = vehicles.flatMap {
     it
}.map {
     it.manufacturer
}

vehicles의 item을 flat하게 하고 map을 이용해 manufactures만 뽑아냄

ref.

https://wooooooak.github.io/kotlin/2019/05/04/Map-vs-flatMap/
https://blog.mindorks.com/flatmap-vs-map-in-kotlin

profile
똑딱똑딱

0개의 댓글