如何修改Kotlin列表中对象的字段并返回更新后的列表
Kotlin 实现Post列表首条点赞数+1的方案
方案1:直接修改原列表(适合不需要保留原数据的场景)
直接操作原可变列表的首个元素即可,写法简单高效:
// 安全取值避免空列表报错,修改点赞数 postsList.firstOrNull()?.apply { likes += 1 } // 打印输出更新后的列表 postsList.forEach { println(it) }
方案2:函数式链式调用(符合你想要的map类扩展函数写法,不修改原数据)
用mapIndexed扩展函数实现,生成全新的更新后列表,不会改动原列表和原对象,更符合函数式编程习惯:
val updatedPostList = postsList.mapIndexed { index, post -> // 判断是否为列表第一条数据 if (index == 0) { // 利用data class自带的copy方法复制对象并修改点赞数属性 post.copy(likes = post.likes + 1) } else { post } } // 打印更新后的列表 updatedPostList.forEach { println(it) }
扩展说明
如果你是要固定修改id=1的Post而非列表第一条,只需要把判断条件改成post.id == 1即可,适配列表排序变化的场景:
val updatedPostList = postsList.map { post -> if (post.id == 1) post.copy(likes = post.likes + 1) else post }
内容的提问来源于stack exchange,提问作者Kurtca Bain
相关产品推荐
相关产品推荐

