如果我有以下数据类
data class User(val name: String = "", val age: Int = 0)
如何定义它的集合,例如:
var user = User [] // this is not working
我需要能够通过以下方式致电用户:
user[0].name // something like this!
答案 0 :(得分:1)
具有不可变(只读)列表的不可变变量:
val users: List<User> = listOf( User("Tom", 32), User("John", 64) )
具有可变列表的不可变变量:
val users: MutableList<User> = mutableListOf( User("Tom", 32), User("John", 64) )
或没有初始值 - 空列表且没有显式变量类型:
val users = mutableListOf<User>()
//or
val users = ArrayList<User>()
users.add(anohterUser)
或users += anotherUser
(在引擎盖下users.add(anohterUser)
)
具有不可变列表的可变变量:
var users: List<User> = listOf( User("Tom", 32), User("John", 64) )
或没有初始值 - 空列表且没有显式变量类型:
var users = emptyList<User>()
users += anotherUser
- *它创建新的ArrayList并将其分配给users
具有可变列表的可变变量:
var users: MutableList<User> = mutableListOf( User("Tom", 32), User("John", 64) )
或没有初始值 - 空列表且没有显式变量类型:
var users = emptyList<User>().toMutableList()
//or
var users = ArrayList<User>()
users.add(anohterUser)
users += anotherUser
错误:Kotlin:分配操作员歧义:
public operator fun Collection.plus(element:String):在kotlin.collections中定义的列表
@InlineOnly public inline operator fun MutableCollection.plusAssign(element:String):在kotlin.collections中定义的单位
也可以看看:
https://kotlinlang.org/docs/reference/collections.html
答案 1 :(得分:0)
你在Kotlin这样做:
val array = arrayOf(User("name1"), User("name2"))
如果要立即创建阵列而不添加元素,请使用
val arrayList = ArrayList<User>()
在这种情况下,你必须明确指定元素类型,因为没有什么可以推断它。
提供一个MutableList实现,它使用了一个 可调整大小的数组作为其后备存储