Функция dropLastWhile

Функция dropLastWhile удаляет элементы с конца коллекции до тех пор, пока выполняется заданное условие (предикат). Функция принимает в параметр predicate лямбда-выражение с условием, которое проверяется для каждого элемента. Удаление прекращается при первом невыполнении условия.

Импорт

kotlin// Функция доступна без импорта

Синтаксис

kotlin// Для List, Set и других коллекций
inline fun <T> Iterable<T>.dropLastWhile(
  predicate: (T) -> Boolean
): List<T>
kotlin// Для Array
inline fun <T> Array<T>.dropLastWhile(
  predicate: (T) -> Boolean
): List<T>
kotlin// Для Map
inline fun <K, V> Map<out K, V>.dropLastWhile(
  predicate: (Entry<K, V>) -> Boolean
): List<Entry<K, V>>

Пример

Удалим элементы с конца списка чисел, пока они больше 2:

kotlinval numbers = listOf(1, 2, 3, 4, 5, 2, 1)
val res = numbers.dropLastWhile { it > 2 }
println(res)

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

kotlinList<Int> [1, 2, 3, 4, 5, 2]

Пример

Удалим элементы с конца массива символов, пока они не равны 'c':

kotlinval chars = arrayOf('a', 'b', 'c', 'd', 'e')
val res = chars.dropLastWhile { it != 'c' }
println(res)

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

kotlinList<Char> ['a', 'b', 'c']

Пример

Удалим элементы с конца множества, пока их длина больше 3:

kotlinval words = setOf("apple", "banana", "kiwi", "pear", "grape")
val res = words.dropLastWhile { it.length > 3 }
println(res)

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

kotlinList<String> ['apple', 'banana', 'kiwi', 'pear']

Пример

Удалим элементы с конца Map, пока значение больше 20:

kotlinval map = mapOf("a" to 10, "b" to 20, "c" to 30, "d" to 40)
val res = map.dropLastWhile { it.value > 20 }
println(res)

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

kotlinList<Entry<String, Int>> [a=10, b=20, c=30]

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

Функция dropLastWhile доступна для:

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

  • функцию drop,
    которая удаляет первые N элементов коллекции
  • функцию dropLast,
    которая удаляет последние N элементов коллекции
  • функцию dropWhile,
    которая удаляет элементы с начала по условию
  • функцию takeLastWhile,
    которая берет элементы с конца по условию