Ce face MutableList.removeFirst
removeFirst() șterge primul element și îl întoarce; removeLast() face același lucru cu ultimul. Cu ele o listă poate funcționa ca o coadă (primul venit, primul servit) sau ca o stivă (ultimul adăugat, primul scos).
Pe o listă goală aruncă NoSuchElementException. Variantele removeFirstOrNull() și removeLastOrNull() întorc null în acest caz, ceea ce le face ușor de folosit într-o buclă while.
Pentru cozi mari, ArrayDeque din Kotlin are aceleași funcții și scoate primul element mai repede decât o listă obișnuită.
Ce returnează
Elementul scos (sau null la variantele OrNull pe o listă goală).
Exemple
Exemplul 1: Coada la ghișeu
Clienții sunt serviți în ordinea sosirii: scoatem mereu primul. Bucla se oprește când removeFirstOrNull întoarce null.
fun main() {
val coada = mutableListOf("Ana", "Ion", "Maria")
while (true) {
val client = coada.removeFirstOrNull() ?: break
println("Servim pe $client, mai așteaptă ${coada.size}")
}
}
Rezultat
Servim pe Ana, mai așteaptă 2
Servim pe Ion, mai așteaptă 1
Servim pe Maria, mai așteaptă 0
Exemplul 2: Stiva de anulare (undo)
Ultima acțiune făcută este prima anulată, deci scoatem de la final cu removeLast.
fun main() {
val actiuni = mutableListOf<String>()
actiuni.add("scris titlu")
actiuni.add("pus imagine")
actiuni.add("șters paragraf")
println("Anulez: ${actiuni.removeLast()}")
println("Anulez: ${actiuni.removeLast()}")
println("Rămâne: $actiuni")
}
Rezultat
Anulez: șters paragraf
Anulez: pus imagine
Rămâne: [scris titlu]
Exemplul 3: Listă goală
removeLastOrNull pe o listă goală întoarce null, fără eroare.
fun main() {
val sarcini = mutableListOf("teme")
println(sarcini.removeFirst())
println(sarcini.removeLastOrNull() ?: "Nicio sarcină")
}
Rezultat
teme
Nicio sarcină
Greșeli frecvente
- Apelezi
removeFirst()pe o listă care poate fi goală:NoSuchElementException. FoloseșteremoveFirstOrNull(). - Folosești
removeAt(0)repetat pe liste foarte mari: fiecare scoatere mută toate elementele. Pentru cozi mari foloseșteArrayDeque.
Comenzi înrudite
MutableList.remove: remove șterge prima apariție a unei valori; removeAt șterge elementul de pe o poziție și îl întoarce.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.MutableList.add: Adaugă un element la finalul listei sau la o poziție dată; addAll adaugă mai multe elemente deodată.Collection.isEmpty: isEmpty/isNotEmpty verifică dacă o colecție are elemente; orEmpty transformă null în colecție goală; ifEmpty dă o alternativă.