Qual è l'equivalente di Kotlin di Java's String []?


165

Vedo che Kotlin ha ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray, che sono equivalenti a byte[], short[], int[],char[], double[], float[]in Java.

Ora mi chiedo, c'è qualche StringArrayequivalente a quello di Java String[]?


7
typealias StringArray = Array<String>;)
Marstran,

Risposte:


226

Non c'è nessun caso speciale per String, perché Stringè un tipo referenziale ordinaria su JVM, in contrasto con le primitive Java ( int, double, ...) - la loro memorizzazione in un punto di riferimento Array<T>richiede loro boxe in oggetti come IntegereDouble . Lo scopo di matrici specializzate come IntArrayin Kotlin è quello di memorizzare primitive non boxate, eliminando il boxing e l'overboxing overhead (lo stesso di Java int[]invece diInteger[] ).

Puoi usare Array<String>(e Array<String?>per nullables), che è equivalente a String[]in Java:

val stringsOrNulls = arrayOfNulls<String>(10) // returns Array<String?>
val someStrings = Array<String>(5) { "it = $it" }
val otherStrings = arrayOf("a", "b", "c")

Vedi anche: Matrici nel riferimento linguistico


18

usa arrayOf , arrayOfNulls , emptyArray

var colors_1: Array<String> = arrayOf("green", "red", "blue")
var colors_2: Array<String?> = arrayOfNulls(3)
var colors_3: Array<String> = emptyArray()

16

Per creare un vuoto Array of Stringsin Kotlin è necessario utilizzare uno dei seguenti sei approcci:

Primo approccio:

val empty = arrayOf<String>()

Secondo approccio:

val empty = arrayOf("","","")

Terzo approccio:

val empty = Array<String?>(3) { null }

Quarto approccio:

val empty = arrayOfNulls<String>(3)

Quinto approccio:

val empty = Array<String>(3) { "it = $it" }

Sesto approccio:

val empty = Array<String>(0, { _ -> "" })

9

Quei tipi sono lì in modo da poter creare array di primitivi e non di tipi in scatola. Poiché String non è una primitiva in Java, puoi semplicemente usare Array<String>in Kotlin come l'equivalente di Java String[].


5

Per Stringse altri tipi, basta usare Array<*>. La ragioneIntArray e altri esistono è quello di impedire l'autoboxing.

Quindi si int[]riferisce a IntArraydove si Integer[]riferisce Array<Int>.


1

Alcuni dei modi più comuni per creare un array String sono

  1. var arr = Array (5) {""}

Questo creerà un array di 5 stringhe con valori iniziali per essere stringa vuota.

  1. var arr = arrayOfNulls <String?>(5)

Ciò creerà un array di dimensioni 5 con valori iniziali da null. È possibile utilizzare i dati String per modificare l'array.

  1. var arr = arrayOf ("zero", "one", "two", "three")

Quando si conosce già il contenuto dell'array, è possibile inizializzare direttamente l'array.

  1. C'è un modo semplice per creare un array multidimensionale di stringhe.

    var matrix = Array (5) {Array (6) {""}}

    Ecco come è possibile creare una matrice con 5 righe e 6 colonne con valori iniziali di stringa vuota.


0

Questo esempio funziona perfettamente su Android

In kotlin puoi usare un'espressione lambda per questo. La definizione del costruttore di array Kotlin è:

Array(size: Int, init: (Int) -> T)

Che valuta a:

skillsSummaryDetailLinesArray = Array(linesLen) {
        i: Int -> skillsSummaryDetailLines!!.getString(i)
}

O:

skillsSummaryDetailLinesArray = Array<String>(linesLen) {
        i: Int -> skillsSummaryDetailLines!!.getString(i)
}

In questo esempio la definizione del campo era:

private var skillsSummaryDetailLinesArray: Array<String>? = null

Spero che questo ti aiuti


0

puoi usare anche:

val frases = arrayOf("texto01","texto02 ","anotherText","and ")

per esempio.

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.