Функция dropLastWhile
Функция dropLastWhile удаляет элементы
с конца коллекции до тех пор, пока выполняется
заданное условие (предикат). Функция принимает
в параметр predicate лямбда-выражение
с условием, которое проверяется для каждого элемента.
Удаление прекращается при первом невыполнении условия.
Импорт
// Функция доступна без импорта
Синтаксис
// Для List, Set и других коллекций
inline fun <T> Iterable<T>.dropLastWhile(
predicate: (T) -> Boolean
): List<T>
// Для Array
inline fun <T> Array<T>.dropLastWhile(
predicate: (T) -> Boolean
): List<T>
// Для Map
inline fun <K, V> Map<out K, V>.dropLastWhile(
predicate: (Entry<K, V>) -> Boolean
): List<Entry<K, V>>
Пример
Удалим элементы с конца списка чисел,
пока они больше 2:
val numbers = listOf(1, 2, 3, 4, 5, 2, 1)
val res = numbers.dropLastWhile { it > 2 }
println(res)
Результат выполнения кода:
List<Int> [1, 2, 3, 4, 5, 2]
Пример
Удалим элементы с конца массива символов,
пока они не равны 'c':
val chars = arrayOf('a', 'b', 'c', 'd', 'e')
val res = chars.dropLastWhile { it != 'c' }
println(res)
Результат выполнения кода:
List<Char> ['a', 'b', 'c']
Пример
Удалим элементы с конца множества,
пока их длина больше 3:
val words = setOf("apple", "banana", "kiwi", "pear", "grape")
val res = words.dropLastWhile { it.length > 3 }
println(res)
Результат выполнения кода:
List<String> ['apple', 'banana', 'kiwi', 'pear']
Пример
Удалим элементы с конца Map,
пока значение больше 20:
val map = mapOf("a" to 10, "b" to 20, "c" to 30, "d" to 40)
val res = map.dropLastWhile { it.value > 20 }
println(res)
Результат выполнения кода:
List<Entry<String, Int>> [a=10, b=20, c=30]
Для каких типов коллекций работает
Функция dropLastWhile доступна для:
Array- массивовList- списковSet- множествMap- ассоциативных массивовIterable- всех коллекций, реализующих интерфейс Iterable
Смотрите также
-
функцию
drop,
которая удаляет первые N элементов коллекции -
функцию
dropLast,
которая удаляет последние N элементов коллекции -
функцию
dropWhile,
которая удаляет элементы с начала по условию -
функцию
takeLastWhile,
которая берет элементы с конца по условию