Цель - вернуть внутренний список объектов с заданным параметром из списка данных.Слой, на котором этот объект будет найден, может отличаться.
Псевдокод для объекта:
class Object {
var id: Int
var innerObjects: ArrayList<Object>
}
Если параметр innerObjects
равен нулю, мы достигли листа.
Нам даны ArrayList<Object>
, которые являются данными, и id
, которые мы ищем.Объект, который мы ищем, может находиться на любом уровне списка.
Теперь у меня есть этот фрагмент кода, но он проверяет только 2 уровня списка.Пожалуйста, предложите решение, которое будет работать для любого количества уровней в списке.Возможно с рекурсией.
private fun getObject(data: ArrayList<Object>, id: Int): ArrayList<Object> {
var result = ArrayList<Object>()
for (i in 0 until data.size) {
if (data[i].id == id) {
result = data[i].innerObjects
} else {
for (j in 0 until data[i].innerObjects.size) {
if (data[i].innerObjects[j].id == id) {
result = data[i].innerObjects[j].innerObjects
}
}
}
}
return result
}
Кстати, код написан на Kotlin, но вы можете предложить решение на Kotlin или Java.