如何在 Kotlin 中创建对象数组而不进行初始化和特定数量的元素?

2022-09-01 19:04:30

我想在Kotlin中创建一个具有特定数量元素的对象数组,问题是我现在没有当前值来初始化声明中的每个对象,我尝试了:

var miArreglo = Array<Medico>(20, {null})

在Java中,我有这个,正是我想要的,但我在Kotlin中需要它。:

Medico[] medicos = new Medico[20];

for(int i = 0 ; i < medicos.length; i++){
    medicos[i] = new Medico();

}

Kotlink相当于上面的Java代码是什么?

另外,我尝试了:

var misDoctores = arrayOfNulls<medic>(20)

for(i in misDoctores ){
    i = medic()
}

但是我Android Studio向我展示了一条消息:“Val无法重新分配”


答案 1

Kotlin 的等价物可以是这样的:

val miArreglo = Array(20) { Medico() }

但我强烈建议您在 Kotlin 中使用 Lists,因为它们更加灵活。在你的情况下,不需要是可变的,因此我会建议这样的事情:List

val miArreglo = List(20) { Medico() }

上面的两个片段可以很容易地解释。第一个参数显然是 Java 中的 or 大小,第二个参数是 lambda 函数,即函数。该函数可以由某种操作组成,最后一个值将始终是返回类型和返回值,即在这种情况下是一个对象。ArrayListinit { ... }init { ... }Medico

我还选择使用 a 而不是 a,因为 's 和 's 不应该被重新分配。如果要编辑您的 ,请改用 。valvarListArrayListMutableList

val miArreglo = MutableList(20) { Medico() }

然后,您可以编辑此列表,例如:

miArreglo.add(Medico())

答案 2

如果你想要可为 null 的对象列表,我们可以做这样的事情

val fragment : Array<Fragment?> = Array(4) { null }