Я внимательно прочитал документацию ArrayList
в Kotlin , и, очевидно, нет способа найти значение в ArrayList
, начиная с указателя. Альтернатива - написать свою собственную функцию, повторяя правильные элементы в ArrayList
и проверяя условие.
Итак, я запрограммировал следующий код:
fun <T> ArrayList<T>.findNext(cond: (T) -> Boolean, p: Int = 0): Int {
for (i in p..this.lastIndex)
if (cond(this[i])) return i
return -1
}
data class Person (
var name: String,
var age: Int
)
fun main() {
var v = arrayListOf<Person>()
v.add(Person("Paul", 22))
v.add(Person("Laura", 24))
v.add(Person("Paul", 50))
v.add(Person("Mary", 24))
println(v.findNext({it.name=="Paul"})) // 0
println(v.findNext({it.name=="Paul"}, 1)) // 2
println(v.findNext({it.name=="Paul"}, 3)) // -1
}
Есть ли что-то лучше этого?