Kotlin中如何将ArrayList元素添加到模型类ArrayList并修复元素全为最后值问题
问题原因分析
你在循环外部仅创建了唯一1个ChaplainAvailableTimesModelClass类实例,ArrayList存储的是对象的内存引用而非独立副本,循环过程中你反复修改同一个实例的time属性,同时多次将同一个实例的引用添加到列表中,最终列表内所有元素都指向同一个对象,所以值都会和最后一次修改的结果保持一致。
修复方案
将模型类实例化逻辑移到循环内部,每次循环都创建独立的新实例即可:
dbSaveAvailableTimes = db.collection(chaplainCollectionName).document(chaplainUserId) for (k in 0 until temporaryTimes.size){ // 每次循环创建新的独立实例 val chaplainAvailableTimesModelClass = ChaplainAvailableTimesModelClass(time = temporaryTimes[k]) chaplainAvailableTimes.add(chaplainAvailableTimesModelClass) }
可选优化写法
Kotlin中可以用更简洁的映射方式直接生成目标列表,避免手动写循环和add操作:
chaplainAvailableTimes = temporaryTimes.map { ChaplainAvailableTimesModelClass(time = it) } as ArrayList<ChaplainAvailableTimesModelClass> // 若需要保留原有列表内容,可直接调用addAll: chaplainAvailableTimes.addAll(temporaryTimes.map { ChaplainAvailableTimesModelClass(time = it) })
内容的提问来源于stack exchange,提问作者kadir yapar
相关产品推荐
相关产品推荐

