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

Функция takeWhile

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

Синтаксис

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

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

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

  • Array
  • List
  • Set
  • Map
  • Iterable
  • Sequence

Пример

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

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

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

List<Int> [1, 2, 3]

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

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

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

List<Int> []

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

  • функцию take,
    которая берет первые n элементов коллекции
  • функцию takeLastWhile,
    которая берет последние элементы, удовлетворяющие условию
  • функцию dropWhile,
    которая пропускает первые элементы, удовлетворяющие условию
  • функцию filter,
    которая фильтрует все элементы по условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить