【发布时间】:2019-10-18 20:36:23
【问题描述】:
我需要使用递归函数比较两个 MutableList,requiredDevices 和 providedDevices。这两个 MutableList 是一个 MutableList 的元素,originalArray 也是如此。如果有匹配,则将requiredDevices和providedDevices中匹配的元素一个一个取出,剩下的分别添加到list1和list2中。我怎样才能做到这一点并保留 requiredDevices 和 providedDevices 和 originalArray 的内容。例如:
originalArray=[requiredDevices, providedDevices]
=[["A","B","C"],["B,"C","A","A","D"]]
requiredDevices=["A","B","C"]
providedDevices=["B,"C","A","A","D"]
,递归后:
list1=[] (empty array)
list2=["A","D"]
originalArray=[[],["A","D"]]
尝试编写递归函数并将 requiredDevices 和 providedDevices 作为参数。递归函数返回一个包含 list1 和 list2 的列表 temp。但是 requiredDevices 和 providedDevices 也被修改了。
val temp = mutableListOf<MutableList<String>>()
fun compareArray(requiredDevices: MutableList<String>, providedDevices: MutableList<String>): List<MutableList<String>> {
for (i in 1 until requiredDevices.size) {
for (j in 0 until providedDevices.size) {
try {
if (requiredDevices[i] == providedDevices[j]) {
requiredDevices.removeAt(i)
providedDevices.removeAt(j)
compareArray(requiredDevices, providedDevices)
temp.add(requiredDevices)
temp.add(providedDevices)
}
} catch (e: IndexOutOfBoundsException) {
}
}
}
return temp.distinct()
}
我想保留 originalArray 的内容,并且仍然得到 list1 和 list2 相同的结果。如下:
originalArray=[["A","B","C"],["B,"C","A","D"]]
【问题讨论】:
标签: kotlin