Bagaimana cara membuat array kosong di kotlin?

93

Saya menggunakan Array(0, {i -> ""})saat ini, dan saya ingin tahu apakah ada implementasi yang lebih baik sepertiArray()

ditambah lagi, jika saya menggunakan arrayOfNulls<String>(0) as Array<String>, kompilator akan mengingatkan saya bahwa pemeran ini tidak akan pernah berhasil. Tapi itu adalah implementasi default di dalamnya Array(0, {i -> ""}). Apakah saya melewatkan sesuatu?

huangcd
sumber
stackoverflow.com/questions/33583235/… - salah satu komentar menunjukkan bahwa peringatan tersebut adalah bug
Duncan McGregor

Jawaban:

128

Sampai akhir (Juni 2015) ada fungsi perpustakaan standar Kotlin

public fun <T> arrayOf(vararg t: T): Array<T>

Jadi untuk membuat array kosong dari Strings Anda bisa menulis

val emptyStringArray = arrayOf<String>()
Martian Odyssey
sumber
2
Bagaimana dengan array yang diketik IntArray? Saat ini saya sedang menggunakan arrayOf<Int>().toIntArray(), apakah ada cara yang lebih baik?
csharpfolk
5
apa tujuan dari metode ini? karena kami tidak dapat menetapkan ukuran sehingga kami tidak dapat menetapkan nilai atau mendapatkan. larik [0] memunculkan java.lang.ArrayIndexOutOfBoundsException:pengecualian.
Asif Mushtaq
bagaimana jika jenisnya Tbukan String?
Ari
1
@csharpfolk, Anda dapat menggunakan intArrayOf () untuk menginisialisasi IntArray yang kosong
Cremons
Bagaimana cara menambahkan item dalam array string di kotlin?
Syed Hamza Hassan
42

Sekadar referensi, ada juga emptyArray. Sebagai contoh,

var arr = emptyArray<String>()

Lihat

pt2121
sumber
1
arr [0] lempar java.lang.ArrayIndexOutOfBoundsException:bagaimana kita bisa menggunakannya?
Asif Mushtaq
8
Ini adalah larik kosong, Anda tidak dapat menambahkan / membaca apa pun ke / darinya. Ini mungkin tampak tidak berguna, tetapi terkadang Anda harus melewatkan sebuah array di suatu tempat dan ini memungkinkan Anda untuk membuat array kosong dengan mudah.
Kuba Beránek
1
ini lebih baik daripada jawaban Martian Odyssey karena ketika digunakan dalam kelas data untuk menginisialisasi array, arrayOf menyebabkan java.util.concurrent.ExecutionException sementara emptyArray () tidak.
iSWORD
1
Ini memiliki panjang yang tidak bisa diubah 0! Jadi itu berguna hanya untuk tujuan yang sangat khusus yang Anda tidak ingin menyimpan data apa pun (hanya ingin mengetik ). Gunakan Array(length){""}untuk memasukkan yang diinginkan length. Lihat jawaban saya di bawah untuk detailnya.
Mir-Ismaili
14

Kosong atau null? Itu pertanyaannya!

Untuk membuat array nulls, cukup gunakan arrayOfNulls<Type>(length).


Tetapi untuk menghasilkan larik ukuran kosonglength , gunakan:

val arr = Array(length) { emptyObject }

Catatannya adalah Anda harus mendefinisikan denganemptyObject benar untuk setiap tipe data (karena Anda tidak menginginkannya null). E. g. untuk Strings, emptyObjectbisa "". Begitu:

val arr = Array(3) { "" }  // is equivalent for: arrayOf("","","")

Berikut adalah contoh langsungnya . Perhatikan bahwa program berjalan dengan dua contoh argumen, secara default.

Mir-Ismaili
sumber
9

array nol

var arrayString=Array<String?>(5){null}
var nullArray= arrayOfNulls<String>(5)
Ali hasan
sumber
1
Ini adalah larik null, bukan string kosong seperti yang dimaksud.
polkovnikov.ph
2

Menggunakan:

@JvmField val EMPTY_STRING_ARRAY = arrayOfNulls<String>(0)

Ini mengembalikan array ukuran 0 dari Strings, diinisialisasi dengan nilai null.

1. Salah:

@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()

Ia kembali arrayOfNulls<String>(0)

2. Salah:

 @JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()

Ini mengembalikan sebuah array yang berisi Strings.

Alexander Savin
sumber
2

Seperti disebutkan di atas, Anda dapat menggunakan IntArray(size)atau FloatArray(size).

CoolMind
sumber
1

Saya menemukan dua cara untuk membuat array kosong, cara kedua tanpa lambda:

var arr = Array (0, { i -> "" })
var arr2 = array<String>()

Mengenai string null Kotlin, ini tidak diperbolehkan. Anda harus menggunakan String? ketik untuk memungkinkan string menjadi null.

Ciprian Khlud
sumber