Функция takeWhile

Функция takeWhile возвращает новую коллекцию, содержащую первые элементы исходной коллекции, которые удовлетворяют заданному предикату (условию). Функция проходит по элементам коллекции последовательно и добавляет их в результат, пока условие возвращает true. Как только встречается элемент, не удовлетворяющий условию, процесс останавливается.

Синтаксис

kotlininline fun <T> Array<out T>.takeWhile(
  predicate: (T) -> Boolean
): List<T>
kotlininline fun <T> Iterable<T>.takeWhile(
  predicate: (T) -> Boolean
): List<T>
kotlininline fun <K, V> Map<out K, V>.takeWhile(
  predicate: (Entry<K, V>) -> Boolean
): List<Entry<K, V>>

Поддерживаемые типы коллекций

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

Пример

Возьмем первые элементы массива чисел, которые меньше 4:

kotlinval numbers = arrayOf(1, 2, 3, 4, 5, 1, 2)
val res = numbers.takeWhile { it < 4 }
println(res)

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

kotlinList<Int> [1, 2, 3]

Пример

Возьмем первые элементы списка строк, которые начинаются с буквы 'a':

kotlinval words = listOf("apple", "ant", "banana", "cat", "air")
val res = words.takeWhile { it.startsWith("a") }
println(res)

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

kotlinList<String> ["apple", "ant"]

Пример

Возьмем первые элементы Map, где значение больше 10:

kotlinval map = mapOf("a" to 15, "b" to 20, "c" to 5, "d" to 25)
val res = map.takeWhile { it.value > 10 }
println(res)

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

kotlinList<Entry<String, Int>> [a=15, b=20]

Пример

Если первый элемент не удовлетворяет условию, возвращается пустая коллекция:

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

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

kotlinList<Int> []

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

  • функцию take,
    которая берет первые n элементов коллекции
  • функцию takeLastWhile,
    которая берет последние элементы, удовлетворяющие условию
  • функцию dropWhile,
    которая пропускает первые элементы, удовлетворяющие условию
  • функцию filter,
    которая фильтрует все элементы по условию