MutableList.add în Kotlin

Adaugă un element la finalul listei sau la o poziție dată; addAll adaugă mai multe elemente deodată.

Sintaxă
fun add(element: E): Boolean
fun add(index: Int, element: E)
fun addAll(elemente: Collection<E>): Boolean
operator fun <T> MutableCollection<in T>.plusAssign(element: T)   // lista += x

Ce face MutableList.add

add(x) pune elementul la sfârșitul listei. add(i, x) îl inserează pe poziția i, iar elementele de după se mută cu o poziție spre dreapta. Poziția poate fi de la 0 până la size (adică inclusiv imediat după ultimul).

addAll(colectie) adaugă toate elementele altei colecții, în ordine. Funcționează pe orice MutableCollection: liste, mulțimi (MutableSet). Pe un set, elementele care există deja nu se mai adaugă.

add și addAll întorc true dacă colecția s-a schimbat. La liste este mereu true; la mulțimi este false când elementul exista. Operatorul += pe o colecție modificabilă face tot add / addAll.

Parametri

Parametru Descriere
element Elementul de adăugat.
index Opțional: poziția la care se inserează (0..size).
elemente La addAll: colecția ale cărei elemente se adaugă.

Ce returnează

add(element) și addAll: true dacă colecția s-a schimbat. add(index, element) nu întoarce nimic.

Exemple

Exemplul 1: La final și pe o poziție

Ion se adaugă la final; Bianca este inserată pe poziția 1, iar ceilalți se mută la dreapta.

fun main() {
    val coada = mutableListOf("Ana", "Maria")
    coada.add("Ion")
    coada.add(1, "Bianca")
    println(coada)
}

Rezultat

[Ana, Bianca, Maria, Ion]

Exemplul 2: addAll și +=

addAll adaugă o listă întreagă. += pe o listă modificabilă face același lucru, pe loc.

fun main() {
    val cumparaturi = mutableListOf("pâine")
    cumparaturi.addAll(listOf("lapte", "ouă"))
    cumparaturi += "mere"
    cumparaturi += listOf("unt", "miere")
    println(cumparaturi)
    println("Produse: ${cumparaturi.size}")
}

Rezultat

[pâine, lapte, ouă, mere, unt, miere]
Produse: 6

Exemplul 3: Valoarea întoarsă pe un set

Pe o mulțime, add spune dacă elementul era nou. addAll întoarce true dacă măcar un element a fost adăugat.

fun main() {
    val inscrisi = mutableSetOf("Ana", "Ion")
    println(inscrisi.add("Maria"))
    println(inscrisi.add("Ana"))
    println(inscrisi.addAll(listOf("Ion", "Ana")))
    println(inscrisi)
}

Rezultat

true
false
false
[Ana, Ion, Maria]

Greșeli frecvente

  • Apelezi add pe o listă creată cu listOf: nu compilează, pentru că List nu are add. Folosește mutableListOf.
  • Inserezi pe o poziție mai mare decât size: IndexOutOfBoundsException.
  • Adaugi într-o listă în timp ce o parcurgi cu for: ConcurrentModificationException. Strânge elementele noi într-o listă separată și adaugă-le după buclă.

Comenzi înrudite

  • MutableList.remove: remove șterge prima apariție a unei valori; removeAt șterge elementul de pe o poziție și îl întoarce.
  • listOf: Creează o listă din elementele date: listOf pentru citire, mutableListOf și arrayListOf pentru o listă pe care o modifici.
  • Iterable.plus: Operatorii + și – pe colecții: creează o listă nouă cu elemente adăugate sau scoase, fără să schimbe originalul.
  • buildList: Construiește o listă, un map sau o mulțime pas cu pas într-un bloc, apoi o întoarce doar pentru citire.
  • MutableCollection.removeAll: Șterge pe loc toate elementele care îndeplinesc o condiție (removeAll, removeIf) sau păstrează doar pe cele care o îndeplinesc (retainAll).