본문 바로가기
코틀린/[Extraction] 추출 작업

[Kotlin][Collection] drop / dropLast

by jinwo_o 2024. 8. 14.

처음 n 개 요소를 제외한 모든 요소를 ​​포함하는 목록을 반환합니다.

public fun <T> Iterable<T>.drop(n: Int): List<T> {
    require(n >= 0) { "Requested element count $n is less than zero." }
    if (n == 0) return toList()
    val list: ArrayList<T>
    if (this is Collection<*>) {
        val resultSize = size - n
        if (resultSize <= 0)
            return emptyList()
        if (resultSize == 1)
            return listOf(last())
        list = ArrayList<T>(resultSize)
        if (this is List<T>) {
            if (this is RandomAccess) {
                for (index in n until size)
                    list.add(this[index])
            } else {
                for (item in listIterator(n))
                    list.add(item)
            }
            return list
        }
    }
    else {
        list = ArrayList<T>()
    }
    var count = 0
    for (item in this) {
        if (count >= n) list.add(item) else ++count
    }
    return list.optimizeReadOnlyList()
}


val chars = ('a'..'z').toList()
println(chars.drop(23)) // [x, y, z]

 

마지막 n 개 요소를 제외한 모든 요소를 ​​포함하는 목록을 반환합니다.

public fun <T> List<T>.dropLast(n: Int): List<T> {
    require(n >= 0) { "Requested element count $n is less than zero." }
    return take((size - n).coerceAtLeast(0))
}


val chars = ('a'..'z').toList()
println(chars.dropLast(23)) // [a, b, c]

 

drop - Kotlin Programming Language

 

kotlinlang.org

 

dropLast - Kotlin Programming Language

 

kotlinlang.org

'코틀린 > [Extraction] 추출 작업' 카테고리의 다른 글

[Kotlin][Collection] unzip  (0) 2024.08.22
[Kotlin][Collection] take / takeLast  (0) 2024.08.16
[Kotlin][Collection] slice  (0) 2024.08.16