Come posso creare un array in Kotlin come in Java fornendo solo una dimensione?


Risposte:


157

Secondo il riferimento , gli array vengono creati nel modo seguente:

  • Per i tipi primitivi di Java esistono tipi distinti IntArray, DoubleArrayecc. Che memorizzano valori non in scatola .

    Vengono creati con i corrispondenti costruttori e funzioni di fabbrica:

    val arrayOfZeros = IntArray(size) //equivalent in Java: new int[size]
    val numbersFromOne = IntArray(size) { it + 1 }
    val myInts = intArrayOf(1, 1, 2, 3, 5, 8, 13, 21)
    

    Il primo è simile a quello in Java, crea semplicemente un array primitivo riempito con il valore predefinito, ad esempio zero for Int, falsefor Boolean.

  • Gli array non primitivi sono rappresentati dalla Array<T>classe, dove Tè il tipo di elementi.

    Tpuò ancora essere uno dei tipi primitivi in Java ( Int, Boolean, ...), ma i valori all'interno sono imballati in modo equivalente a Java di Integer, Doublee così via.

    Inoltre, Tpuò essere sia nullable che non null come Stringe String?.

    Questi sono creati in modo simile:

    val nulls = arrayOfNulls<String>(size) //equivalent in Java: new String[size]
    val strings = Array(size) { "n = $it" } 
    val myStrings = arrayOf("foo", "bar", "baz")
    
    val boxedInts = arrayOfNulls<Int>(size) //equivalent in Java: new Integer[size]
    val boxedZeros = Array(size) { 0 }
    

19
Array<Int>(size)non si compila. Questo perché non è possibile creare un array non annullabile senza fornire gli elementi.
Kirill Rakhman

2
@KirillRakhman, grazie per il tuo commento, è stato un errore involontario. Fisso.
tasto di scelta rapida

0

In Kotlin, creare un IntArray di dimensione N è semplice. Utilizzare IntArray(n)o il tipo appropriato, come descritto in dettaglio nella risposta del tasto di scelta rapida.

Quando utilizzi il tuo array di dimensioni fisse, puoi usare Kotlin Destructuring

// Create fixed sized array
val point = IntArray(2)

// Access values directly
val (x, y) = point

In questo caso, xverrà preso dall'indice 0, ydall'indice 1, ecc.


0

Ecco un semplice esempio di init di Array of String

        var names = Array<String>(<AnotherArray.size>) { i -> "" }

Kotlin doc

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.