Ce face Array.toList
toList() copiază elementele tabloului într-o List. Lista se afișează frumos cu println, se compară cu == după conținut și poate fi dată funcțiilor care cer liste.
Pentru o listă modificabilă folosește toMutableList(). Invers, dintr-o listă obții un tablou cu toTypedArray() (sau toIntArray() pentru List<Int>).
Lista este o copie: modificările ulterioare ale tabloului nu se văd în ea. Dacă vrei o listă care „privește” tabloul fără copiere, există asList().
Ce returnează
List<T> cu elementele tabloului, în aceeași ordine.
Exemple
Exemplul 1: Din tablou în listă și înapoi
Lista se afișează direct. toTypedArray() face drumul invers.
fun main() {
val tablou = arrayOf("Iași", "Cluj", "Oradea")
val lista = tablou.toList()
println(lista)
val inapoi = (lista + "Galați").toTypedArray()
println(inapoi.contentToString())
println(intArrayOf(3, 1, 2).toList() == listOf(3, 1, 2))
}
Rezultat
[Iași, Cluj, Oradea]
[Iași, Cluj, Oradea, Galați]
true
Exemplul 2: Copie, nu legătură
Schimbăm tabloul după toList(): lista copiată nu se schimbă, dar cea creată cu asList() da.
fun main() {
val temperaturi = intArrayOf(18, 21, 19)
val copie = temperaturi.toList()
val vedere = temperaturi.asList()
temperaturi[0] = 25
println("copie: $copie")
println("vedere: $vedere")
}
Rezultat
copie: [18, 21, 19]
vedere: [25, 21, 19]
Greșeli frecvente
- Te aștepți ca lista obținută cu
toList()să urmărească tabloul. Este o copie făcută în momentul apelului.
Comenzi înrudite
Iterable.toList: Copiază elementele într-o listă nouă: toList dă o listă doar pentru citire, toMutableList una modificabilă.arrayOf: Creează un tablou (Array) cu dimensiune fixă din elementele date; intArrayOf creează un tablou de Int primitive.Array.contentToString: contentToString afișează elementele tabloului ca text; contentEquals compară două tablouri element cu element.