Wie kann ich ein Array in Kotlin wie in Java erstellen, indem ich nur eine Größe gebe?

Antworten:

155

Entsprechend der Referenz werden Arrays auf folgende Weise erstellt:

  • Für Java primitive Typen gibt es verschiedene Arten IntArray, DoubleArrayetc. , die Speicherung unboxed Werte.

    Sie werden mit den entsprechenden Konstruktoren und Factory-Funktionen erstellt:

    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)
    

    Das erste ähnelt dem in Java. Es erstellt lediglich ein primitives Array, das mit dem Standardwert gefüllt ist, z. B. Null für Int, falsefür Boolean.

  • Nicht primitive Arrays werden durch die Array<T>Klasse dargestellt, wobei Tes sich um den Elementtyp handelt.

    Tkann immer noch in Java (eine Art primitiver sein Int, Boolean...), aber innen werden die Werte äquivalent zu Java verpackt werden Integer, Doubleund so weiter.

    Auch Tsein kann sowohl nullable und nicht-null wie Stringund String?.

    Diese werden auf ähnliche Weise erstellt:

    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 }
    
Hotkey
quelle
19
Array<Int>(size)kompiliert nicht. Dies liegt daran, dass Sie kein nicht nullbares Array erstellen können, ohne die Elemente anzugeben.
Kirill Rakhman
2
@KirillRakhman, danke für deine Bemerkung, das war ein versehentlicher Fehler. Fest.
Hotkey
1

In Kotlin ist das Erstellen eines IntArrays der Größe N einfach. Verwenden Sie IntArray(n)oder den entsprechenden Typ, wie in der Antwort des Hotkeys ausführlich beschrieben.

Wenn Sie ein Array mit fester Größe verwenden, können Sie Kotlin Destructuring verwenden

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

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

In diesem Fall xwird aus Index 0, yaus Index 1 usw. entnommen .

Gibolt
quelle