如何在 kotlin 中创建一个空数组?

我目前正在使用 Array(0, {i -> ""}),我想知道是否有更好的实现,比如 Array()

另外,如果我使用 arrayOfNulls<String>(0) as Array<String>,编译器会提醒我这个强制转换永远不会成功。但它是 Array(0, {i -> ""})内部的默认实现。我错过什么了吗?

92039 次浏览

我找到了两种创建空数组的方法,第二种没有 lambda 的方法:

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

关于 Kotlin 的 null 字符串,这是不允许的。您必须使用 绳子?类型来允许字符串为 null。

As of late (June 2015) there is the Kotlin standard library function

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

因此,要创建一个空的 String 数组,您可以编写

val emptyStringArray = arrayOf<String>()

仅供参考,还有 emptyArray。例如,

var arr = emptyArray<String>()

你看

空数组

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

用途:

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

它返回一个0大小的 String 数组,用空值初始化。

错:

@JvmField val EMPTY_STRING_ARRAY = emptyArray<String>()

It returns arrayOfNulls<String>(0)

2. 错误:

 @JvmField val EMPTY_STRING_ARRAY = arrayOf<String>()

它返回一个包含 String 的数组。

空的还是 null的? 这就是问题所在!

要创建一个 null数组,只需使用 arrayOfNulls<Type>(length)


但要生成大小为 length空的数组,请使用:

val arr = Array(length) { emptyObject }

请注意,每个数据类型都有适当的 您 < strong > must 定义一个 emptyObject(因为您不希望使用 null)。例如,对于 StringemptyObject可以是 ""。所以:

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

这里 活生生的例子。请注意,默认情况下,程序运行时带有两个示例参数。

如上所述,您可以使用 IntArray(size)FloatArray(size)

初始化数组和赋值的最简单方法:

val myArray: Array<String> = Array(2) { "" }
myArray[0] = "Java"
myArray[1] = "Kotlin"