Array.size în Kotlin

Tablouri (Array) Kotlin 1.0

size spune câte elemente are tabloul; indices dă intervalul pozițiilor valide, de la 0 la size - 1.

Sintaxă
val Array<T>.size: Int
val Array<T>.indices: IntRange

Ce face Array.size

size este dimensiunea tabloului, fixată la creare. Pozițiile valide sunt de la 0 la size - 1.

indices întoarce exact acest interval (0..size-1), ca IntRange. Bucla for (i in tablou.indices) este modul sigur de a parcurge pozițiile: nu poți greși cu „mai mic” sau „mai mic sau egal”. Cu i in tablou.indices verifici și dacă o poziție este validă.

Pentru liste, aceleași proprietăți se numesc tot size și indices.

Ce returnează

size: Int. indices: IntRange de la 0 la size - 1 (gol dacă tabloul este gol).

Exemple

Exemplul 1: Parcurgere cu poziții

Avem nevoie de poziție ca să afișăm numărul zilei. indices dă pozițiile 0, 1, 2, 3.

fun main() {
    val pasi = intArrayOf(6200, 8400, 3100, 10050)
    println("Zile: ${pasi.size}")
    println("Poziții: ${pasi.indices}")
    for (i in pasi.indices) {
        println("Ziua ${i + 1}: ${pasi[i]} pași")
    }
}

Rezultat

Zile: 4
Poziții: 0..3
Ziua 1: 6200 pași
Ziua 2: 8400 pași
Ziua 3: 3100 pași
Ziua 4: 10050 pași

Exemplul 2: Verificarea unei poziții

Înainte să citim, verificăm dacă poziția cerută este în indices. Altfel am primi ArrayIndexOutOfBoundsException.

fun main() {
    val castigatori = arrayOf("Ioana", "Vlad", "Sorina")
    for (loc in listOf(1, 3, 4)) {
        val i = loc - 1
        if (i in castigatori.indices) {
            println("Locul $loc: ${castigatori[i]}")
        } else {
            println("Locul $loc: nu există")
        }
    }
}

Rezultat

Locul 1: Ioana
Locul 3: Sorina
Locul 4: nu există

Greșeli frecvente

  • Scrii for (i in 0..tablou.size): intervalul include size, care nu este o poziție validă. Folosește indices sau 0 until tablou.size.
  • Scrii tablou.size() cu paranteze, ca în Java: în Kotlin size este proprietate.

Comenzi înrudite

  • List.indices: indices este intervalul pozițiilor valide ale listei (0..size-1); lastIndex este poziția ultimului element.
  • arrayOf: Creează un tablou (Array) cu dimensiune fixă din elementele date; intArrayOf creează un tablou de Int primitive.
  • Array.copyOf: Creează o copie a tabloului; cu o dimensiune nouă, taie elementele în plus sau completează cu null/0.