1 回答
TA贡献1865条经验 获得超7个赞
您可以zip在集合中使用函数来连接两个元素。该withIndex()函数有助于将列表转换为元素索引和值对的列表。完整的解决方案可能如下
val list1 = listOf("a", "b", "c")
val list2 = listOf("a", "B", "c")
val diff : Map<Int, String> = list1.withIndex()
.zip(list2) { (idx,a), b -> if (a != b) idx to "$a != $b" else null}
.filterNotNull().toMap()
请注意,zip当两个列表中都有元素时,该函数会进行迭代,它将跳过任何列表中可能存在的剩余部分。可以通过使用以下函数添加空元素来修复它:
fun <T> List<T>.addNulls(element: T, toSize: Int) : List<T> {
val elementsToAdd = (toSize - size)
return if (elementsToAdd > 0) {
this + List(elementsToAdd) { element }
} else {
this
}
}
并在使用该函数之前在两个列表上调用该zip函数
添加回答
举报
