1 回答

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊
您可以zip在集合中使用函數(shù)來連接兩個元素。該withIndex()函數(shù)有助于將列表轉(zhuǎn)換為元素索引和值對的列表。完整的解決方案可能如下
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當(dāng)兩個列表中都有元素時,該函數(shù)會進(jìn)行迭代,它將跳過任何列表中可能存在的剩余部分。可以通過使用以下函數(shù)添加空元素來修復(fù)它:
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
}
}
并在使用該函數(shù)之前在兩個列表上調(diào)用該zip函數(shù)
添加回答
舉報