std扩展是否插入或更新使用比较器的kotlin可变列表?

std扩展是否插入或更新使用比较器的kotlin可变列表?,kotlin,Kotlin,我有一个复杂对象的列表,我想将此列表与新列表合并。但若在新的元素中有相同的对象(基于传递的比较器),那个么元素应该被替换,否则按顺序添加到列表的末尾 我写了一个扩展函数来完成这项工作,但我正在寻找更有效(更优雅)的方法,比如一些现有扩展的组合 fun <T> MutableList<T>.insertOrUpdate(items: List<T>, comparator: Comparator<T>): List<T> { va

我有一个复杂对象的列表,我想将此列表与新列表合并。但若在新的元素中有相同的对象(基于传递的比较器),那个么元素应该被替换,否则按顺序添加到列表的末尾

我写了一个扩展函数来完成这项工作,但我正在寻找更有效(更优雅)的方法,比如一些现有扩展的组合

fun <T> MutableList<T>.insertOrUpdate(items: List<T>, comparator: Comparator<T>): List<T> {
    val out = mutableListOf<T>()
    val toInsert = items.toMutableList()
    forEach { oldItem ->
        var wasUpdated = false
        items.forEach { newItem ->
            if (comparator.compare(oldItem, newItem) == 0) {
                out.add(newItem)
                toInsert.remove(newItem)
                wasUpdated = true
            }
        }
        if(!wasUpdated){
            out.add(oldItem)
        }
    }

    out.addAll(toInsert)

    return out
}

fun MutableList.insertOrUpdate(项目:列表,比较器:比较器):列表{
val out=mutableListOf()
val toInsert=items.toMutableList()
forEach{oldItem->
var wasUpdated=false
items.forEach{newItem->
if(comparator.compare(oldItem,newItem)==0){
out.add(newItem)
toInsert.remove(新建项)
wasUpdated=true
}
}
如果(!已更新){
out.add(旧项)
}
}
out.addAll(toInsert)
返回
}

使用
LinkedHashSet
(按插入顺序迭代其元素)而不是
列表
,只需
addAll()
?@gidds和如何传递比较器?