You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何向mutableListOf添加多个对象避免元素覆盖

问题根因

你的代码全程仅创建了1个Users类实例,dbUsers类中定义的users属性是全局唯一的,每次调用addUser都是修改这个唯一实例的属性,往mutableListOf中添加的也只是该实例的引用,没有生成新对象。因此List中所有元素都指向同一块内存地址,后续修改属性自然会覆盖之前所有添加的“旧值”。

修复方案

每次调用addUser时都新建独立的Users实例,不要复用全局的同一个对象,修改后代码如下:

class Users(var phone: Int = 0, var name: String = "") // 可根据你的原有逻辑调整属性定义

class dbUsers{
    val list = mutableListOf<Users>() // 移除预先添加的全局单例users

    fun addUser(phone: Int, name: String){
        // 每次新增都创建独立的Users对象
        val newUser = Users().apply {
            this.phone = phone
            this.name = name
        }
        list.add(newUser)
    }
}

fun main() {
    val dbAccess = dbUsers()
    dbAccess.addUser(8439, "Thiago")
    dbAccess.addUser(12312, "Maria")
    println(dbAccess.list[0].name) // 输出 Thiago
    println(dbAccess.list[1].name) // 输出 Maria
}

优化建议

  • dbUsers类名建议遵循Kotlin命名规范,首字母大写改为DbUsers
  • 如果Users类仅用来承载数据,建议定义为data class,后续判等、拷贝等操作会更便捷

内容的提问来源于stack exchange,提问作者Thiago Urubá

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:09:03