web-dev-qa-db-fra.com

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

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

Maintenant, je me demande s'il existe un StringArray équivalent au String[] de Java?

81
chancyWu

Il n'y a pas de cas particulier pour String, car String est un type de référentiel ordinaire sur la machine virtuelle Java, contrairement à primitives Java (int, double, ...) - en les stockant dans une référence Array<T> nécessite les encadrant dans des objets tels que Integer et Double . Les tableaux spécialisés tels que IntArray de Kotlin permettent de stocker des primitives non encadrées, en éliminant les frais généraux liés à la boxe et au déballage (identiques à 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: Arrays dans la référence du langage }

131
hotkey

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

7
zsmb13

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()
5
Dan Alboteanu

Pour Strings et les autres types, il vous suffit d'utiliser Array<*>. La raison pour laquelle IntArray et d'autres existent est d'empêcher la sélection automatique.

Donc, int[] se rapporte à IntArrayInteger[] se rapporte à Array<Int>.

3
nhaarman

vous pouvez aussi utiliser:

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

par exemple.

0
João Arthur

Cet exemple fonctionne parfaitement sous Android

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

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

Ce 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 la suivante:

private var skillsSummaryDetailLinesArray: Array<String>? = null

J'espère que cela t'aides

0
user2288580

Pour créer un Array of Strings vide dans 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, { _ -> "" })
0
ARGeo