List.takeLast în Kotlin

takeLast(n) întoarce ultimele n elemente ale listei, iar dropLast(n) lista fără ultimele n.

Sintaxă
fun <T> List<T>.takeLast(n: Int): List<T>
fun <T> List<T>.dropLast(n: Int): List<T>
fun <T> List<T>.takeLastWhile(conditie: (T) -> Boolean): List<T>

Ce face List.takeLast

takeLast(n) întoarce ultimele n elemente, în ordinea lor din listă (nu inversate). dropLast(n) întoarce lista fără ultimele n elemente.

La fel ca take și drop, nu dau eroare dacă n este mai mare decât lista. Există și variantele cu condiție: takeLastWhile și dropLastWhile, care lucrează de la final spre început.

Parametri

Parametru Descriere
n Câte elemente de la final se iau sau se elimină. Nu poate fi negativ.

Ce returnează

O List<T> nouă.

Exemple

Exemplul 1: Ultimele trei comenzi

Comenzile sunt în ordinea plasării. takeLast(3) le dă pe cele mai noi, în aceeași ordine.

fun main() {
    val comenzi = listOf("#101", "#102", "#103", "#104", "#105")
    println("Recente: ${comenzi.takeLast(3)}")
    println("Mai vechi: ${comenzi.dropLast(3)}")
}

Rezultat

Recente: [#103, #104, #105]
Mai vechi: [#101, #102]

Exemplul 2: Fără semnele de punctuație de la final

dropLastWhile elimină caracterele de la final cât timp nu sunt litere.

fun main() {
    val litere = "Bună ziua!!!".toList()
    val curat = litere.dropLastWhile { !it.isLetter() }.joinToString("")
    println(curat)
}

Rezultat

Bună ziua

Greșeli frecvente

  • Aștepți ca takeLast să inverseze ordinea: elementele rămân în ordinea din listă. Pentru ordine inversă adaugă reversed().

Comenzi înrudite

  • Iterable.take: take(n) întoarce primele n elemente, iar drop(n) întoarce tot ce rămâne după ce sari peste primele n.
  • Iterable.takeWhile: takeWhile ia elementele de la început cât timp condiția e adevărată; dropWhile le sare și întoarce restul.
  • Iterable.reversed: Întoarce o listă nouă cu elementele în ordine inversă: ultimul devine primul.
  • Iterable.first: first/last întorc primul sau ultimul element (sau primul care îndeplinește o condiție); variantele OrNull dau null în loc de excepție.