Java'nın String [] 'in Kotlin eşdeğeri nedir?


165

Kotlin'in Java'da ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArrayeşdeğer olduğunu görüyorum byte[], short[], int[],char[], double[], float[].

Şimdi merak ediyorum, StringArrayJava'nın eşdeğeri var String[]mı?


7
typealias StringArray = Array<String>;)
marstran

Yanıtlar:


226

İçin özel bir durum mevcut değil String, çünkü Stringaksine, JVM üzerinde sıradan bir referans türüdür Java ilkel ( int, double, ...) - referans saklayarak Array<T>gerektirir gibi nesneler içine boks IntegerveDouble . IntArrayKotlin'deki gibi özel dizilerin amacı, kutulu olmayan ilkelleri depolamak, boks ve kutudan çıkarma yükünden kurtulmaktır ( int[]bunun yerine Java ile aynıdır Integer[]).

Java'da eşdeğer olan Array<String>(ve Array<String?>nullables için) kullanabilirsiniz String[]:

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

Ayrıca bakınız: Dil referansındaki diziler


18

Kullanım 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

Array of StringsKotlin'de boş bir alan oluşturmak için aşağıdaki altı yaklaşımdan birini kullanmalısınız:

İlk yaklaşım:

val empty = arrayOf<String>()

İkinci yaklaşım:

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

Üçüncü yaklaşım:

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

Dördüncü yaklaşım:

val empty = arrayOfNulls<String>(3)

Beşinci yaklaşım:

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

Altıncı yaklaşım:

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

9

Bu türler oradadır, böylece kutulu türler değil, ilkel diziler oluşturabilirsiniz. String Java'da bir ilkel olmadığından Array<String>, Kotlin'de Java'nın eşdeğeri olarak kullanabilirsiniz String[].


5

İçin Stringsdiğer türleri ve, sadece kullanmak Array<*>. Nedeni IntArrayve diğerlerinin mevcut olması otomatik boksu önlemektir.

Yani, int[]ilgili IntArrayyerle Integer[]ilgilidir Array<Int>.


1

String dizisi oluşturmanın yaygın yollarından bazıları

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

Bu, başlangıç ​​değerleri boş dize olacak şekilde 5 dize dizisi oluşturur.

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

Bu, başlangıç ​​değerleri null olacak şekilde 5 büyüklüğünde bir dizi oluşturur. Diziyi değiştirmek için Dize verilerini kullanabilirsiniz.

  1. var arr = arrayOf ("sıfır", "bir", "iki", "üç")

Dizinin içeriğini zaten bildiğinizde diziyi doğrudan başlatabilirsiniz.

  1. Çok boyutlu bir dizi dizi oluşturmanın da kolay bir yolu vardır .

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

    Bu şekilde, 5 satır ve 6 sütunlu, başlangıçtaki boş dizenin değerlerini içeren bir matris oluşturabilirsiniz.


0

Bu örnek Android'de mükemmel çalışır

Kotlin'de bunun için bir lambda ifadesi kullanabilirsiniz. Kotlin Array Oluşturucu tanımı:

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

Aşağıdakileri değerlendirir:

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

Veya:

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

Bu örnekte alan tanımı şöyleydi:

private var skillsSummaryDetailLinesArray: Array<String>? = null

Bu yardımcı olur umarım


0

siz de kullanabilirsiniz:

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

Örneğin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.