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

[Kotlin][Collection] take / takeLast

by jinwo_o 2024. 8. 16.

처음 n 개 요소를 포함하는 목록을 반환합니다.

public fun <T> Iterable<T>.take(n: Int): List<T> {
    require(n >= 0) { "Requested element count $n is less than zero." }
    if (n == 0) return emptyList()
    if (this is Collection<T>) {
        if (n >= size) return toList()
        if (n == 1) return listOf(first())
    }
    var count = 0
    val list = ArrayList<T>(n)
    for (item in this) {
        list.add(item)
        if (++count == n)
            break
    }
    return list.optimizeReadOnlyList()
}


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

 

마지막 n 개 요소를 포함하는 목록을 반환합니다.

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

val chars = ('a'..'z').toList()
println(chars.takeLast(2)) // [y, z]

 

take - Kotlin Programming Language

 

kotlinlang.org

 

takeLast - Kotlin Programming Language

 

kotlinlang.org

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

[Kotlin][Collection] unzip  (0) 2024.08.22
[Kotlin][Collection] slice  (0) 2024.08.16
[Kotlin][Collection] drop / dropLast  (0) 2024.08.14