Quel est l'équivalent Kotlin de Java's String []?

165

Je vois que Kotlin a ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray, ce qui est équivalent à byte[], short[], int[],char[], double[], float[]Java.

Maintenant, je me demande, y a-t-il un StringArrayéquivalent à Java String[]?

chancyWu
la source
7
typealias StringArray = Array<String>;)
marstran

Réponses:

226

Il n'y a pas cas particulier pour String, car Stringest un type de référence ordinaire sur la JVM, contrairement aux primitives Java ( int, double...) - les stocker dans une référence Array<T>nécessite les objets dans la boxe comme IntegeretDouble . Le but des tableaux spécialisés comme IntArraydans Kotlin est de stocker des primitives non boxées, en éliminant les frais généraux de boxing et de déballage (le même que Java int[]au lieu de Integer[]).

Vous pouvez utiliser Array<String>(et Array<String?>pour les nullables), ce qui équivaut à String[]en Java:

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

Voir aussi: Tableaux dans la référence du langage

touche de raccourci
la source
18

utiliser 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()
Dan Alboteanu
la source
16

Pour créer un vide Array of Stringsdans Kotlin, vous devez utiliser l'une des six approches suivantes:

Première approche:

val empty = arrayOf<String>()

Deuxième approche:

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

Troisième approche:

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

Quatrième approche:

val empty = arrayOfNulls<String>(3)

Cinquième approche:

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

Sixième approche:

val empty = Array<String>(0, { _ -> "" })
Andy Fedoroff
la source
9

Ces types sont là pour que vous puissiez créer des tableaux des primitives, et non des types encadrés. Puisque String n'est pas une primitive en Java, vous pouvez simplement l'utiliser Array<String>dans Kotlin comme l'équivalent d'un Java String[].

zsmb13
la source
5

Pour Stringset d'autres types, vous utilisez simplement Array<*>. La raison IntArrayet d'autres existent est d'empêcher l'autoboxing.

Cela int[]concerne donc IntArrayoù se Integer[]rapporte Array<Int>.

nhaarman
la source
1

Certaines des méthodes courantes pour créer un tableau de chaînes sont

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

Cela créera un tableau de 5 chaînes dont les valeurs initiales seront une chaîne vide.

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

Cela créera un tableau de taille 5 avec des valeurs initiales nulles. Vous pouvez utiliser des données String pour modifier le tableau.

  1. var arr = arrayOf ("zéro", "un", "deux", "trois")

Lorsque vous connaissez déjà le contenu du tableau, vous pouvez initialiser le tableau directement.

  1. Il existe également un moyen simple de créer un tableau multidimensionnel de chaînes.

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

    C'est ainsi que vous pouvez créer une matrice avec 5 lignes et 6 colonnes avec des valeurs initiales de chaîne vide.

Himanshu Garg
la source
0

Cet exemple fonctionne parfaitement sous Android

Dans kotlin, vous pouvez utiliser une expression lambda pour cela. La définition du constructeur de tableaux Kotlin est:

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

Qui évalue à:

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

Ou:

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

Dans cet exemple, la définition du champ était:

private var skillsSummaryDetailLinesArray: Array<String>? = null

J'espère que cela t'aides

user2288580
la source
0

vous pouvez aussi utiliser:

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

par exemple.

João Arthur
la source