НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
448 of 1310 menu

Функция 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,
    которая пропускает последние элементы, удовлетворяющие условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить