본문 바로가기
코틀린/[Filtering] 필터 작업

[Kotlin][Collection] dropWhile / dropLastWhile

by jinwo_o 2024. 8. 28.

주어진 조건을 만족하는 첫 번째 요소를 제외한 모든 요소를 ​​포함하는 목록을 반환합니다.

public inline fun <T> Iterable<T>.dropWhile(predicate: (T) -> Boolean): List<T> {
    var yielding = false
    val list = ArrayList<T>()
    for (item in this)
        if (yielding)
            list.add(item)
        else if (!predicate(item)) {
            list.add(item)
            yielding = true
        }
    return list
}


val chars = ('a'..'z').toList()
println(chars.dropWhile { it < 'x' }) // [x, y, z]

 

주어진 조건을 만족하는 마지막 요소를 제외한 모든 요소를 ​​포함하는 목록을 반환합니다.

public inline fun <T> List<T>.dropLastWhile(predicate: (T) -> Boolean): List<T> {
    if (!isEmpty()) {
        val iterator = listIterator(size)
        while (iterator.hasPrevious()) {
            if (!predicate(iterator.previous())) {
                return take(iterator.nextIndex() + 1)
            }
        }
    }
    return emptyList()
}


val chars = ('a'..'z').toList()
println(chars.dropLastWhile { it > 'c' }) // [a, b, c]

 

dropWhile - Kotlin Programming Language

 

kotlinlang.org

 

dropLastWhile - Kotlin Programming Language

 

kotlinlang.org