Функция indexOfLast

Функция indexOfLast выполняет поиск последнего элемента в коллекции, который удовлетворяет заданному условию-предикату. Возвращает индекс найденного элемента или -1, если ни один элемент не удовлетворяет условию. Функция применяется к массивам Array, спискам List и другим коллекциям, поддерживающим индексацию.

Синтаксис

kotlin// Для Array<T>
inline fun <T> Array<out T>.indexOfLast(
  predicate: (T) -> Boolean
): Int
kotlin// Для List<T>
inline fun <T> List<T>.indexOfLast(
  predicate: (T) -> Boolean
): Int
kotlin// Для CharSequence
inline fun CharSequence.indexOfLast(
  predicate: (Char) -> Boolean
): Int

Пример

Найдем индекс последнего четного числа в массиве:

kotlinval numbers = arrayOf(1, 3, 5, 2, 4, 6, 7)
val res = numbers.indexOfLast { it % 2 == 0 }
println(res)

Результат выполнения кода:

kotlinInt 5

Пример

Найдем индекс последней строки, начинающейся на букву 'a':

kotlinval words = listOf("apple", "banana", "avocado", "orange", "apricot")
val res = words.indexOfLast { it.startsWith("a") }
println(res)

Результат выполнения кода:

kotlinInt 4

Пример

Найдем индекс последнего символа-цифры в строке:

kotlinval text = "abc123def456"
val res = text.indexOfLast { it.isDigit() }
println(res)

Результат выполнения кода:

kotlinInt 11

Пример

Если элемент не найден, функция возвращает -1:

kotlinval numbers = listOf(1, 3, 5, 7, 9)
val res = numbers.indexOfLast { it > 10 }
println(res)

Результат выполнения кода:

kotlinInt -1

Для каких типов коллекций работает

Функция indexOfLast доступна для следующих типов коллекций:

Для Set и Map функция недоступна, так как эти коллекции не поддерживают индексацию элементов.

Смотрите также

  • функцию indexOf,
    которая ищет первый индекс элемента
  • функцию indexOfFirst,
    которая ищет первый элемент по условию
  • функцию findLast,
    которая возвращает последний элемент по условию