首页 > 解决方案 > Kotlin-有没有办法在没有 foreach 的情况下更新 Kotlin 集合项中的单个字段?

问题描述

我正在Android使用kotlin. 我对 kotlin 非常陌生,我有以下场景。

我在 List 集合对象中有用户列表,其中包含firstName、和lastNamemobilehasDeleted

var myList: List<Users>
myList = <I have list of users here>

我只想用每个用户hasDeleted的值更新一个标志。true

我知道我们可以用它foreach来更新值。但是,我想知道我是否可以遵循其他方法。

标签: kotlinforeach

解决方案


不使用的唯一原因forEach是您的Users对象是不可变的(您至少应该考虑这一点)并且它是一个定义如下的数据类:

data class Users(val firstName: String, 
                 val lastName: String, 
                 val mobile: String, 
                 val hasDeleted: Boolean)

如果这是你所拥有的,那么这map是你最好的选择,因为你不能再改变一个Users对象,hasDeleted = true因为它们是不可变的。在这种情况下,您应该使用以下内容,它将返回一个包含更新Users对象的列表。

myList.map { it.copy(hasDeleted = true) }

除了这种特殊情况,我认为没有充分的理由避免使用forEach.


推荐阅读