АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
398 of 1310 menu
Бесплатный курс по выкладке сайтов на хостинг. Разбираем все нюансы! Начало 14 октября. Жми для записи!

Функция filter

Функция filter применяется к коллекциям и выполняет фильтрацию элементов по заданному предикату (условию). Возвращает новую коллекцию, содержащую только те элементы исходной коллекции, которые удовлетворяют условию. Исходная коллекция при этом не изменяется.

Импорт

import kotlin.collections.filter

Синтаксис

// Для Iterable (List, Set) inline fun <T> Iterable<T>.filter( predicate: (T) -> Boolean ): List<T>
// Для Array inline fun <T> Array<T>.filter( predicate: (T) -> Boolean ): List<T>
// Для Map inline fun <K, V> Map<out K, V>.filter( predicate: (Entry<K, V>) -> Boolean ): Map<K, V>
// Для Sequence fun <T> Sequence<T>.filter( predicate: (T) -> Boolean ): Sequence<T>

Пример

Фильтрация массива чисел:

val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val evenNumbers = numbers.filter { it % 2 == 0 } println(evenNumbers)

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

List<Int> [2, 4, 6, 8, 10]

Пример

Фильтрация списка строк:

val words = listOf("apple", "banana", "cherry", "date", "elderberry") val longWords = words.filter { it.length > 5 } println(longWords)

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

List<String> ["banana", "cherry", "elderberry"]

Пример

Фильтрация множества:

val numbersSet = setOf(10, 20, 30, 40, 50, 60) val smallNumbers = numbersSet.filter { it < 35 } println(smallNumbers)

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

List<Int> [10, 20, 30]

Пример

Фильтрация Map по значениям:

val map = mapOf("a" to 1, "b" to 2, "c" to 3, "d" to 4) val filteredMap = map.filter { it.value > 2 } println(filteredMap)

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

Map<String, Int> {c=3, d=4}

Пример

Фильтрация с использованием сложного условия:

val numbers = listOf(15, 25, 35, 45, 55, 65) val result = numbers.filter { it > 20 && it < 60 && it % 5 == 0 } println(result)

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

List<Int> [25, 35, 45, 55]

Для каких типов коллекций работает

Функция filter работает со следующими типами коллекций:

  • Array - массивы
  • List - списки
  • Set - множества
  • Map - ассоциативные массивы
  • Sequence - последовательности
  • Iterable - любые итерируемые коллекции

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

  • функцию filterNot,
    которая фильтрует элементы, не удовлетворяющие условию
  • функцию filterNotNull,
    которая фильтрует null значения
  • функцию filterIndexed,
    которая фильтрует элементы с учетом их индекса
  • функцию map,
    которая преобразует элементы коллекции