如何在Kotlin集合中创建UpdateOrInsert

我有一个项目列表,其中一个项目副本是由用户更改,我如何找到它在我的收集由Id和更新,或者如果它没有找到我想添加项目? 我最好的猜测是,但它需要丑陋的指标(五)

fun updateOrInsert(note : UserNote) { val list = notes.value!! val v = list.firstOrNull{(Id) -> Id ==note.Id} if (v==null) { list.add(note) } else { val i = list.indexOf(v) list[i] = note } notes.value = list } 

使用indexOfFirst查找具有给定ID的第一个元素的索引。 如果为-1,则将该项目添加到列表中,否则,更改找到的索引处的值。