Функция takeLastWhile
Функция takeLastWhile возвращает список, содержащий
последние элементы коллекции, которые удовлетворяют заданному
предикату. Функция проходит по коллекции с конца и добавляет
элементы в результат до тех пор, пока предикат возвращает
true. Как только встречается элемент, не удовлетворяющий
условию, процесс останавливается.
Синтаксис
inline fun <T> Array<out T>.takeLastWhile(
predicate: (T) -> Boolean
): List<T>
inline fun ByteArray.takeLastWhile(
predicate: (Byte) -> Boolean
): List<Byte>
inline fun ShortArray.takeLastWhile(
predicate: (Short) -> Boolean
): List<Short>
inline fun IntArray.takeLastWhile(
predicate: (Int) -> Boolean
): List<Int>
inline fun LongArray.takeLastWhile(
predicate: (Long) -> Boolean
): List<Long>
inline fun FloatArray.takeLastWhile(
predicate: (Float) -> Boolean
): List<Float>
inline fun DoubleArray.takeLastWhile(
predicate: (Double) -> Boolean
): List<Double>
inline fun BooleanArray.takeLastWhile(
predicate: (Boolean) -> Boolean
): List<Boolean>
inline fun CharArray.takeLastWhile(
predicate: (Char) -> Boolean
): List<Char>
inline fun <T> Iterable<T>.takeLastWhile(
predicate: (T) -> Boolean
): List<T>
inline fun String.takeLastWhile(
predicate: (Char) -> Boolean
): String
Поддерживаемые типы коллекций
Функция takeLastWhile работает со следующими типами коллекций:
Array- массивы любых типовList- спискиSet- множестваIterable- любые итерируемые коллекцииString- строки (возвращаетString)- Примитивные массивы:
IntArray,DoubleArray,CharArrayи другие
Для Map функция takeLastWhile не применяется напрямую,
но можно использовать её для ключей, значений или записей.
Пример
Возьмем последние элементы массива чисел, которые больше 2:
val numbers = arrayOf(1, 2, 3, 4, 5, 1, 2)
val res = numbers.takeLastWhile { it > 2 }
println(res)
Результат выполнения кода:
List<Int> [4, 5]
Пример
Возьмем последние символы строки, которые являются цифрами:
val text = "abc12345"
val res = text.takeLastWhile { it.isDigit() }
println(res)
Результат выполнения кода:
String "12345"
Пример
Возьмем последние элементы списка, которые начинаются с буквы 'c':
val list = listOf("apple", "banana", "cherry", "date", "cherry", "elderberry")
val res = list.takeLastWhile { it.startsWith("c") }
println(res)
Результат выполнения кода:
List<String> ["cherry"]
Пример
Если ни один элемент не удовлетворяет условию, возвращается пустая коллекция:
val numbers = listOf(1, 2, 3, 4, 5)
val res = numbers.takeLastWhile { it > 10 }
println(res)
Результат выполнения кода:
List<Int> []
Смотрите также
-
функцию
take,
которая берет первые n элементов коллекции -
функцию
takeLast,
которая берет последние n элементов коллекции -
функцию
takeWhile,
которая берет первые элементы, удовлетворяющие условию -
функцию
dropLastWhile,
которая пропускает последние элементы, удовлетворяющие условию