Мне нужно сравнить два MutableList, requiredDevices и предоставленных устройств, используя рекурсивную функцию. Эти два MutableList являются элементом MutableList, а также originalArray. Если есть совпадение, он поочередно извлекает соответствующий элемент requiredDevices и provideDevices и добавляет остаток в list1 и list2 соответственно. Как я могу это сделать и сохранить содержимое обязательных устройств и предоставленных устройств и оригинального массива. Например:
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 и обеспечитьDevices. Рекурсивная функция возвращает список temp, содержащий list1 и list2. Но requiredDevices и предоставляемые устройства также изменены.
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()
}
Я хочу сохранить оригинальное содержимое Array и по-прежнему получать тот же результат, что и list1 и list2. Следующим образом:
originalArray=[["A","B","C"],["B,"C","A","D"]]