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[]?


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


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()

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, { _ -> "" })

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[].


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>.


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.


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


0

vous pouvez aussi utiliser:

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

par exemple.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.