본문 바로가기
Kotlin

[Kotlin] Collection 관련 함수들 (filter, map, flatmap)

by 너츠너츠 2023. 2. 3.

filter

주어진 람다의 조건을 만족하는 원소만 필터링하는 기능입니다.

List와 Set을 필터링하는 경우에는 List로, Map을 필터링하는 경우에는 Map으로 반환합니다.

filter 함수는 요소의 값만 확인할 수 있습니다.

val list = listOf("A", "B", "C")
val newList = list.filter {
   it != "A"
}
println(newList)

// input: [A, B, C]
// Result: [B, C]

map

각 원소를 원하는 형태로 변환해서 새 컬렉션을 만듭니다.

새로 만들어지는 컬렉션은 원본 컬렉션과 원소의 개수는 같지만 각 원소는 주어진 람다(함수)에 따라 변환됩니다.

val list = listOf("A", "B", "C")
val newList = list.map {
    "$it!"
}
println(newList)

// Input: [A, B, C]
// Result: [A!, B!, C!]

flatMap

람다 내에 Iterable(반복가능)한 형태만 넣을 수 있습니다.

각 조건별로 만들어진 배열들을 하나로 만들어준다고 생각하면 됩니다.

ex) A -> A! -> [A, !], B -> B! -> [B, !], C -> C! -> [C, !]

val list = listOf("A", "B", "C")
val newList = list.flatMap {
    "$it!".toList()
}
println(newList)

// Input: [A, B, C]
// Result: [A, !, B, !, C, !]

 

 

 

<참고>

https://woojeenow.tistory.com/entry/Kotlin-Collection-%EA%B4%80%EB%A0%A8-%ED%95%A8%EC%88%98%EB%93%A4%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-filter-map

https://wooooooak.github.io/kotlin/2019/05/04/Map-vs-flatMap/

반응형

댓글