Apa yang setara dengan Kotlin dari Java's String []?

164

Saya melihat bahwa Kotlin memiliki ByteArray, ShortArray, IntArray, CharArray, DoubleArray, FloatArray, yang setara dengan byte[], short[], int[],char[], double[], float[]di Jawa.

Sekarang saya bertanya-tanya, apakah ada yang StringArraysetara dengan Java String[]?

untung-untungan
sumber
7
typealias StringArray = Array<String>;)
marstran

Jawaban:

225

Tidak ada kasus khusus untuk String, karena Stringmerupakan jenis referensial biasa pada JVM, berbeda dengan primitif Java ( int, double, ...) - menyimpannya dalam referensi Array<T>membutuhkan tinju mereka ke dalam objek seperti IntegerdanDouble . Tujuan dari array khusus seperti IntArraydi Kotlin adalah untuk menyimpan primitif non-kotak, menyingkirkan tinju dan membuka kotak overhead (sama seperti Java, int[]bukan Integer[]).

Anda dapat menggunakan Array<String>(dan Array<String?>untuk nullables), yang setara dengan String[]di Java:

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

Lihat juga: Array dalam referensi bahasa

hotkey
sumber
18

gunakan arrayOf , arrayOfNulls , blankArray

var colors_1: Array<String> = arrayOf("green", "red", "blue")
var colors_2: Array<String?> = arrayOfNulls(3)
var colors_3: Array<String> = emptyArray()
Dan Alboteanu
sumber
16

Untuk membuat yang kosong Array of Stringsdi Kotlin Anda harus menggunakan salah satu dari enam pendekatan berikut:

Pendekatan pertama:

val empty = arrayOf<String>()

Pendekatan kedua:

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

Pendekatan ketiga:

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

Pendekatan keempat:

val empty = arrayOfNulls<String>(3)

Pendekatan kelima:

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

Pendekatan keenam:

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

Jenis-jenis itu ada sehingga Anda dapat membuat array dari primitif, dan bukan tipe kotak. Karena String bukan primitif di Jawa, Anda bisa menggunakannya Array<String>di Kotlin sebagai setara dengan Java String[].

zsmb13
sumber
5

Untuk Stringsdan jenis lainnya, Anda hanya menggunakan Array<*>. Alasannya IntArraydan yang lainnya ada adalah untuk mencegah autoboxing.

Jadi int[]berkaitan dengan di IntArraymana Integer[]berhubungan dengan Array<Int>.

nhaarman
sumber
1

Beberapa cara umum untuk membuat array String adalah

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

Ini akan membuat array 5 string dengan nilai awal menjadi string kosong.

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

Ini akan membuat array ukuran 5 dengan nilai awal menjadi nol. Anda dapat menggunakan data string untuk memodifikasi array.

  1. var arr = arrayOf ("zero", "one", "two", "three")

Ketika Anda sudah tahu isi array maka Anda dapat menginisialisasi array secara langsung.

  1. Ada cara mudah untuk membuat array string multi dimensi juga.

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

    Ini adalah bagaimana Anda dapat membuat matriks dengan 5 baris dan 6 kolom dengan nilai awal dari string kosong.

Himanshu Garg
sumber
0

Contoh ini berfungsi sempurna di Android

Di kotlin Anda dapat menggunakan ekspresi lambda untuk ini. Definisi konstruktor Array Kotlin adalah:

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

Yang mengevaluasi ke:

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

Atau:

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

Dalam contoh ini definisi bidang adalah:

private var skillsSummaryDetailLinesArray: Array<String>? = null

Semoga ini membantu

pengguna2288580
sumber
0

Anda dapat menggunakan juga:

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

sebagai contoh.

João Arthur
sumber