Jaki jest odpowiednik String [] w języku Kotlin w języku Kotlin?

164

Widzę, że Kotlin ma ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArrayodpowiedniki byte[], short[], int[],char[], double[], float[]w Javie.

Teraz zastanawiam się, czy istnieje StringArrayodpowiednik Java String[]?

chancyWu
źródło
7
typealias StringArray = Array<String>;)
marstran

Odpowiedzi:

225

Nie ma szczególny przypadek String, ponieważ Stringjest zwykłym referencyjna typ na JVM, w przeciwieństwie do prymitywów Java ( int, double...) - przechowywanie ich w odniesieniu Array<T>wymaga boks je do obiektów, jak IntegeriDouble . Celem wyspecjalizowanych tablic, takich jak IntArrayw Kotlinie, jest przechowywanie nieopakowanych prymitywów, pozbycie się pudełkowania i narzutu rozpakowywania (takie same jak w Javie int[]zamiast Integer[]).

Możesz użyć Array<String>(i Array<String?>dla wartości null), co jest równoważne z String[]w Javie:

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

Zobacz także: Tablice w odwołaniu do języka

Klawisz skrótu
źródło
18

użyj 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
źródło
16

Aby stworzyć pusty Array of Stringsw Kotlinie, powinieneś użyć jednego z sześciu następujących podejść:

Pierwsze podejście:

val empty = arrayOf<String>()

Drugie podejście:

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

Trzecie podejście:

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

Czwarte podejście:

val empty = arrayOfNulls<String>(3)

Piąte podejście:

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

Szóste podejście:

val empty = Array<String>(0, { _ -> "" })
Andy Fedoroff
źródło
9

Te typy istnieją, aby można było tworzyć tablice prymitywów, a nie typów pudełkowych. Ponieważ String nie jest prymitywem w Javie, możesz go po prostu użyć Array<String>w Kotlin jako odpowiednik Javy String[].

zsmb13
źródło
5

Dla Stringsi innych typów, po prostu używasz Array<*>. Powodem IntArrayi innymi jest zapobieganie autoboxingowi.

Więc int[]odnosi się do tego, IntArraygdzie się Integer[]odnosi Array<Int>.

nhaarman
źródło
1

Niektóre z typowych sposobów tworzenia tablicy String to

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

Spowoduje to utworzenie tablicy 5 ciągów z wartościami początkowymi, które będą pustym łańcuchem.

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

Spowoduje to utworzenie tablicy o rozmiarze 5 z wartościami początkowymi null. Możesz użyć danych typu String, aby zmodyfikować tablicę.

  1. var arr = arrayOf ("zero", "jeden", "dwa", "trzy")

Jeśli znasz już zawartość tablicy, możesz bezpośrednio zainicjować tablicę.

  1. Istnieje również łatwy sposób tworzenia wielowymiarowej tablicy ciągów.

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

    W ten sposób można utworzyć macierz z 5 wierszami i 6 kolumnami z początkowymi wartościami pustego ciągu.

Himanshu Garg
źródło
0

Ten przykład działa doskonale w systemie Android

W kotlinie możesz użyć do tego wyrażenia lambda. Definicja konstruktora tablicy Kotlin to:

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

Który daje:

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

Lub:

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

W tym przykładzie definicja pola była następująca:

private var skillsSummaryDetailLinesArray: Array<String>? = null

Mam nadzieję że to pomoże

user2288580
źródło
0

możesz użyć też:

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

na przykład.

João Arthur
źródło