Làm thế nào để tạo một mảng trống trong kotlin?


93

Tôi Array(0, {i -> ""})hiện đang sử dụng và tôi muốn biết nếu có cách triển khai tốt hơn, chẳng hạn nhưArray()

ngoài ra, nếu tôi đang sử dụng arrayOfNulls<String>(0) as Array<String>, trình biên dịch sẽ cảnh báo tôi rằng dàn diễn viên này không bao giờ có thể thành công. Nhưng đó là cài đặt mặc định bên trong Array(0, {i -> ""}). Tôi có bỏ lỡ điều gì không?


stackoverflow.com/questions/33583235/... - một trong những ý kiến cho rằng các cảnh báo là một lỗi
Duncan McGregor

Câu trả lời:


128

Tính đến cuối (tháng 6 năm 2015) có chức năng thư viện tiêu chuẩn Kotlin

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

Vì vậy, để tạo một mảng chuỗi trống, bạn có thể viết

val emptyStringArray = arrayOf<String>()

2
Còn về mảng được gõ như thế IntArraynào? Hiện tại tôi đang sử dụng arrayOf<Int>().toIntArray(), có cách nào tốt hơn không?
csharpfolk

5
mục đích của những phương pháp này là gì? vì chúng ta không thể gán kích thước nên chúng ta không thể gán giá trị hoặc nhận được. mảng [0] ném java.lang.ArrayIndexOutOfBoundsException:ngoại lệ.
Asif Mushtaq

những gì nếu loại là Tthay vì String?
Ari

1
@csharpfolk, bạn có thể sử dụng intArrayOf () để khởi tạo một IntArray trống
Cremons

Làm thế nào để thêm mục trong mảng chuỗi trong kotlin?
Syed Hamza Hassan

42

Chỉ để tham khảo, cũng có emptyArray. Ví dụ,

var arr = emptyArray<String>()

Xem


1
arr [0] ném java.lang.ArrayIndexOutOfBoundsException:như thế nào chúng ta có thể sử dụng nó?
Asif Mushtaq

8
Đó là một mảng trống, bạn không thể thêm / đọc bất cứ thứ gì vào / từ nó. Nó có vẻ vô dụng, nhưng đôi khi bạn phải chuyển một mảng ở đâu đó và điều này cho phép bạn xây dựng một mảng trống một cách dễ dàng.
Kuba Beránek 21/07/17

1
điều này tốt hơn câu trả lời của Martian Odyssey vì khi được sử dụng trong một lớp dữ liệu để khởi tạo một mảng, arrayOf gây ra java.util.concurrent.ExecutionException trong khi voidArray () thì không.
iSWORD

1
Điều này có độ dài không thay đổi là 0! Vì vậy, nó chỉ hữu ích cho những mục đích rất đặc biệt mà bạn không muốn lưu trữ bất kỳ dữ liệu nào (chỉ muốn loại ). Sử dụng Array(length){""}để bao gồm một mong muốn length. Xem câu trả lời của tôi bên dưới để biết chi tiết.
Mir-Ismaili

14

Trống rỗng hay null? Đó là câu hỏi!

Để tạo một mảng nulls, chỉ cần sử dụng arrayOfNulls<Type>(length).


Nhưng để tạo một mảng kích thước trốnglength , hãy sử dụng:

val arr = Array(length) { emptyObject }

Lưu ý là bạn phải xác địnhemptyObject đúng cho mỗi kiểu dữ liệu (vì bạn không muốn có null). Ví dụ. cho Strings, emptyObjectcó thể được "". Vì thế:

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

Đây là một ví dụ trực tiếp . Lưu ý rằng chương trình chạy với hai đối số mẫu, theo mặc định.


9

mảng rỗng

var arrayString=Array<String?>(5){null}
var nullArray= arrayOfNulls<String>(5)

1
Đây là một mảng rỗng, không phải chuỗi rỗng như trong câu hỏi.
polkovnikov.ph Ngày

2

Sử dụng:

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

Nó trả về một mảng chuỗi kích thước 0, được khởi tạo với giá trị null.

1. Sai:

@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()

Nó trở lại arrayOfNulls<String>(0)

2. Sai:

 @JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()

Nó trả về một mảng chứa các Chuỗi.


2

Như đã đề cập ở trên, bạn có thể sử dụng IntArray(size)hoặc FloatArray(size).


1

Tôi đã tìm thấy hai cách để tạo một mảng trống, cách thứ hai mà không có lambda:

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

Đối với chuỗi null của Kotlin, điều này không được phép. Bạn phải sử dụng Chuỗi? gõ để cho phép các chuỗi là null.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.