MutableList.clear în Kotlin

Liste și colecții modificabile Kotlin 1.0 (fill: 1.2)

clear golește lista (size devine 0); fill înlocuiește toate elementele cu aceeași valoare, păstrând numărul lor.

Sintaxă
fun clear()
fun <T> MutableList<T>.fill(valoare: T)

Ce face MutableList.clear

clear() șterge toate elementele. Lista rămâne același obiect, deci toate variabilele care o folosesc o văd goală. Merge pe orice colecție modificabilă: liste, seturi, map-uri.

fill(x) nu schimbă numărul de elemente: pune valoarea x pe fiecare poziție. Este util pentru resetare (de exemplu toate scorurile la 0).

Parametri

Parametru Descriere
valoare La fill: valoarea pusă pe fiecare poziție.

Ce returnează

Nimic; lista se schimbă pe loc.

Exemple

Exemplul 1: Golirea coșului după plată

După clear() coșul are 0 elemente, iar isEmpty() este adevărat.

fun main() {
    val cos = mutableListOf("pâine", "lapte", "ouă")
    println("Plătim ${cos.size} produse")
    cos.clear()
    println("Coș: $cos, gol: ${cos.isEmpty()}")
}

Rezultat

Plătim 3 produse
Coș: [], gol: true

Exemplul 2: fill: scorurile resetate la 0

Fiecare jucător își păstrează locul, dar scorul devine 0. Lista are tot 4 elemente.

fun main() {
    val scoruri = mutableListOf(12, 7, 30, 18)
    scoruri.fill(0)
    println(scoruri)
    println("Jucători: ${scoruri.size}")
}

Rezultat

[0, 0, 0, 0]
Jucători: 4

Exemplul 3: Aceeași listă, văzută din două locuri

alias arată spre aceeași listă, așa că și ea este goală după clear. Copia făcută cu toList() rămâne neschimbată.

fun main() {
    val mesaje = mutableListOf("Salut", "Ce faci?")
    val alias = mesaje
    val copie = mesaje.toList()
    mesaje.clear()
    println("alias: $alias")
    println("copie: $copie")
}

Rezultat

alias: []
copie: [Salut, Ce faci?]

Greșeli frecvente

  • Aștepți ca fill să adauge elemente într-o listă goală: lista goală rămâne goală. Pentru o listă nouă cu n valori folosește MutableList(n) { 0 }.
  • Golești o listă la care țin referință și alte părți ale programului: și ele o văd goală. Dacă vrei să păstrezi datele, fă întâi o copie.

Comenzi înrudite

  • MutableCollection.removeAll: Șterge pe loc toate elementele care îndeplinesc o condiție (removeAll, removeIf) sau păstrează doar pe cele care o îndeplinesc (retainAll).
  • Collection.isEmpty: isEmpty/isNotEmpty verifică dacă o colecție are elemente; orEmpty transformă null în colecție goală; ifEmpty dă o alternativă.
  • List.subList: Întoarce o vedere asupra unei porțiuni din listă, de la poziția deLa inclusiv până la panaLa exclusiv.
  • MutableList.add: Adaugă un element la finalul listei sau la o poziție dată; addAll adaugă mai multe elemente deodată.