Ce face arrayOf
Un tablou (Array) are o dimensiune fixă, stabilită la creare: poți schimba elementele (a[i] = x), dar nu poți adăuga sau șterge. Tablourile sunt mai apropiate de memorie decât listele și sunt folosite mai ales pentru performanță sau când o funcție Java cere un tablou.
arrayOf(...) creează un Array<T>. Pentru numere există tablouri speciale, fără „cutii” pentru fiecare număr: intArrayOf → IntArray (și doubleArrayOf, longArrayOf, booleanArrayOf, charArrayOf). Pentru calcule cu multe numere, IntArray este mai rapid decât Array<Int>.
Atenție: println(tablou) afișează ceva de genul [I@1b6d3586, nu elementele. Pentru afișare folosește contentToString() sau joinToString().
Parametri
| Parametru | Descriere |
|---|---|
elemente |
Valorile tabloului, în ordine. Numărul lor stabilește dimensiunea. |
Ce returnează
Array<T> sau IntArray cu elementele date.
Exemple
Exemplul 1: Creare, citire și modificare
Putem schimba un element, dar nu putem adăuga altele. contentToString() afișează conținutul.
fun main() {
val zile = arrayOf("luni", "marți", "miercuri")
val temperaturi = intArrayOf(12, 15, 9)
zile[2] = "joi"
temperaturi[0] += 3
println(zile.contentToString())
println(temperaturi.contentToString())
println("Dimensiune: ${zile.size}")
}
Rezultat
[luni, marți, joi]
[15, 15, 9]
Dimensiune: 3
Exemplul 2: IntArray și calcule
Un IntArray are aceleași funcții utile ca listele: sum, max, average, filter.
fun main() {
val vanzari = intArrayOf(120, 340, 95, 410, 260)
println("Total: ${vanzari.sum()} lei")
println("Maxim: ${vanzari.max()} lei")
println("Media: ${vanzari.average()} lei")
println("Zile peste 200: ${vanzari.filter { it > 200 }}")
}
Rezultat
Total: 1225 lei
Maxim: 410 lei
Media: 245.0 lei
Zile peste 200: [340, 410, 260]
Exemplul 3: Tablou dat unei funcții cu vararg
Operatorul * (spread) desface un tablou în argumente separate pentru un parametru vararg.
fun salut(vararg nume: String) {
for (n in nume) println("Salut, $n!")
}
fun main() {
val invitati = arrayOf("Ana", "Radu")
salut(*invitati)
salut("Elena", *invitati)
}
Rezultat
Salut, Ana!
Salut, Radu!
Salut, Elena!
Salut, Ana!
Salut, Radu!
Greșeli frecvente
- Afișezi un tablou cu
println(tablou)și vezi[Ljava.lang.String;@.... Foloseștetablou.contentToString(). - Compari două tablouri cu
==: compară dacă este același tablou, nu conținutul. FoloseștecontentEquals. - Vrei să adaugi un element: tablourile au dimensiune fixă. Folosește o listă (
mutableListOf) sau creează un tablou nou cutablou + element.
Comenzi înrudite
arrayOfNulls: arrayOfNulls creează un tablou de dimensiunea dată plin cu null; emptyArray creează un tablou fără elemente.Array.contentToString: contentToString afișează elementele tabloului ca text; contentEquals compară două tablouri element cu element.Array.size: size spune câte elemente are tabloul; indices dă intervalul pozițiilor valide, de la 0 la size – 1.listOf: Creează o listă din elementele date: listOf pentru citire, mutableListOf și arrayListOf pentru o listă pe care o modifici.Array.toList: Transformă un tablou într-o listă nouă, doar pentru citire, cu aceleași elemente.