Функция filter

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

Импорт

kotlinimport kotlin.collections.filter

Синтаксис

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

Пример

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

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

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

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

Пример

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

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

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

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

Пример

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

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

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

kotlinList<Int> [10, 20, 30]

Пример

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

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

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

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

Пример

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

kotlinval numbers = listOf(15, 25, 35, 45, 55, 65)

val result = numbers.filter { 
  it > 20 && it < 60 && it % 5 == 0 
}
println(result)

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

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

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

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

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

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