arrayOfNulls în Kotlin

Tablouri (Array) Kotlin 1.0

arrayOfNulls creează un tablou de dimensiunea dată plin cu null; emptyArray creează un tablou fără elemente.

Sintaxă
fun <T> arrayOfNulls(dimensiune: Int): Array<T?>
fun <T> emptyArray(): Array<T>

Ce face arrayOfNulls

arrayOfNulls<String>(5) creează un tablou cu 5 poziții, toate null. Tipul elementelor este String?, pentru că fiecare poziție poate fi goală. Este util când știi câte locuri ai nevoie, dar valorile vin mai târziu (de exemplu locurile dintr-o sală).

emptyArray<T>() întoarce un tablou de dimensiune 0, de exemplu ca rezultat al unei funcții care nu a găsit nimic.

Pentru un tablou plin cu o valoare sau calculat după poziție se folosește constructorul: Array(5) { "liber" }, IntArray(5) { it * it }.

Parametri

Parametru Descriere
dimensiune Numărul de poziții ale tabloului (nu poate fi negativ).

Ce returnează

Array<T?> cu toate elementele null, respectiv un Array<T> gol.

Exemple

Exemplul 1: Locuri într-o sală

La început toate locurile sunt null (libere). Când rezervăm, scriem numele persoanei pe poziția locului.

fun main() {
    val locuri = arrayOfNulls<String>(5)
    locuri[1] = "Ana"
    locuri[3] = "Mihai"

    println(locuri.contentToString())
    for (i in locuri.indices) {
        println("Locul ${i + 1}: ${locuri[i] ?: "liber"}")
    }
}

Rezultat

[null, Ana, null, Mihai, null]
Locul 1: liber
Locul 2: Ana
Locul 3: liber
Locul 4: Mihai
Locul 5: liber

Exemplul 2: emptyArray și constructorul Array

emptyArray are dimensiunea 0. Constructorul Array(n) { ... } calculează fiecare element din poziția lui.

fun main() {
    val nimic = emptyArray<String>()
    val patrate = Array(5) { i -> i * i }
    val mese = Array(3) { i -> "Masa ${i + 1}" }

    println("${nimic.size} ${nimic.contentToString()}")
    println(patrate.contentToString())
    println(mese.contentToString())
}

Rezultat

0 []
[0, 1, 4, 9, 16]
[Masa 1, Masa 2, Masa 3]

Greșeli frecvente

  • Folosești elementele unui arrayOfNulls fără să verifici null: compilatorul te obligă să scrii ?., ?: sau !!.
  • Scrii emptyArray() fără tip și fără context: tipul nu poate fi dedus.

Comenzi înrudite

  • arrayOf: Creează un tablou (Array) cu dimensiune fixă din elementele date; intArrayOf creează un tablou de Int primitive.
  • Array.size: size spune câte elemente are tabloul; indices dă intervalul pozițiilor valide, de la 0 la size – 1.
  • emptyList: Întoarce o listă, un map sau o mulțime goală, doar pentru citire; util ca valoare implicită sau rezultat „nimic găsit”.