개발일지

Kotlin in A..Z - Collections (Filtering Operation) 본문

Kotlin (코틀린)

Kotlin in A..Z - Collections (Filtering Operation)

강태종 2020. 12. 2. 13:53

drop

N개의 숫자만큼 앞에서부터 버리고 나머지를 리턴한다.

fun main() {
    val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val drop = list.drop(5)

    println(list)
    println(drop)
}
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[6, 7, 8, 9, 10]

dropLast

N개의 숫자만큼 뒤에서부터 버리고 나머지를 리턴한다.

fun main() {
    val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val drop = list.dropLast(5)

    println(list)
    println(drop)
}
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5]

dropWhile

조건이 만족할 때까지 앞에서부터 버리고 나머지를 리턴한다.

fun main() {
    val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val drop = list.dropWhile { it < 4 }

    println(list)
    println(drop)
}
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[4, 5, 6, 7, 8, 9, 10]

dropLastWhile

조건이 만족할 때까지 뒤에서부터 버리고 나머지를 리턴한다.

fun main() {
    val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val drop = list.dropLastWhile { it < 4 }

    println(list)
    println(drop)
}
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

take

drop의 반대

fun main() {
    val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    println(list.take(5))
}
[1, 2, 3, 4, 5]

filter

조건에 만족하는 element들을 반환한다

=> dropWhile은 조건이 만족하지 않으면 break되지만 filter은 전체를 확인한다.

=> 순서가 보장됐으면 dropWhile, 보장되지 않으면 filter를 쓰는게 효율적이다.

fun main() {
    val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    println(list.filter { it < 5 })
}
[1, 2, 3, 4]

filterNot

filter의 반대

fun main() {
    val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    println(list.filterNot { it < 5 })
}
[5, 6, 7, 8, 9, 10]

slice

범위에 속하는 element를 리턴한다.

fun main() {
    val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    println(list.slice(3..6))
}
[4, 5, 6, 7]

 

'Kotlin (코틀린)' 카테고리의 다른 글

Kotlin in A..Z - Gson  (0) 2021.06.06
Kotlin in A..Z - Aggregate Operation  (0) 2020.11.28
Kotlin in A..Z - Collection  (0) 2020.11.27
Kotlin in A..Z - Coroutine(5) CoroutineScope  (0) 2020.10.27
Kotlin in A..Z - Coroutine(4) async  (0) 2020.10.27
Comments