如何将多个对象放入 Kotlin 的 mutableListOf 中?
How to put multiple objects in a mutableListOf in Kotlin?
我试图将一些对象放入 mutableListOf,但所有对象最终都被覆盖了。
class Users {...}
class dbUsers{
var users = Users()
val list = mutableListOf(users)
fun addUser(phone: Int, name: String){
users.phone = phone
users.name = name
list.add(users)
}
}
fun main() {
var dbAccess = dbUsers()
dbAccess.addUser(8439, "Thiago")
dbAccess.addUser(12312, "Maria")
println(dbAccess.list[0].name)
println(dbAccess.list[1].name)
}
当我们在位置 1 打印时,我们看到它被覆盖了
看起来 list
是从 users
引用的,因为 users
本身每次都会更新,所以你会得到这个结果。
有两种方法可以解决这个问题,
每次调用 addUser
创建一个新用户,这很简单
如果你在 Users
中有其他数据而不是 name
和 phone
,你可以通过在你的 class copy()
喜欢
class YourClass () {
// Your class other stuffs here
fun copy(): YourClass { //Get another instance of YourClass with the values like this!
val json = Gson().toJson(this)
return Gson().fromJson(json, YourClass::class.java)
}
}
然后通过使用 yourClassObject.copy() 你将得到一个具有相同值的新实例
fun addUser(phone: Int, name: String){
val newUsers = users.copy()
newUsers.phone = phone
newUsers.name = name
list.add(newUsers)
}
您仅在 dbUsers
的 class 级别初始化了一次 Users
对象。在将用户添加到列表之前,您每次都需要创建新对象。将 users
初始化移动到方法中而不是
class dbUsers{
val list = mutableListOf<Users>()
fun addUser(phone: Int, name: String){
var users = Users()
users.phone = phone
users.name = name
list.add(users)
}
}
我试图将一些对象放入 mutableListOf,但所有对象最终都被覆盖了。
class Users {...}
class dbUsers{
var users = Users()
val list = mutableListOf(users)
fun addUser(phone: Int, name: String){
users.phone = phone
users.name = name
list.add(users)
}
}
fun main() {
var dbAccess = dbUsers()
dbAccess.addUser(8439, "Thiago")
dbAccess.addUser(12312, "Maria")
println(dbAccess.list[0].name)
println(dbAccess.list[1].name)
}
当我们在位置 1 打印时,我们看到它被覆盖了
看起来 list
是从 users
引用的,因为 users
本身每次都会更新,所以你会得到这个结果。
有两种方法可以解决这个问题,
每次调用
addUser
创建一个新用户,这很简单如果你在
Users
中有其他数据而不是name
和phone
,你可以通过在你的 classcopy()
喜欢
class YourClass () {
// Your class other stuffs here
fun copy(): YourClass { //Get another instance of YourClass with the values like this!
val json = Gson().toJson(this)
return Gson().fromJson(json, YourClass::class.java)
}
}
然后通过使用 yourClassObject.copy() 你将得到一个具有相同值的新实例
fun addUser(phone: Int, name: String){
val newUsers = users.copy()
newUsers.phone = phone
newUsers.name = name
list.add(newUsers)
}
您仅在 dbUsers
的 class 级别初始化了一次 Users
对象。在将用户添加到列表之前,您每次都需要创建新对象。将 users
初始化移动到方法中而不是
class dbUsers{
val list = mutableListOf<Users>()
fun addUser(phone: Int, name: String){
var users = Users()
users.phone = phone
users.name = name
list.add(users)
}
}