Функция filterNot

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

Синтаксис

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

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

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

Пример

Отфильтруем массив чисел, оставив только нечетные числа:

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

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

kotlinList<Int> [1, 3, 5, 7, 9]

Пример

Отфильтруем список строк, оставив только строки длиной больше 3 символов:

kotlinval strings = listOf("a", "ab", "abc", "abcd", "abcde")
val res = strings.filterNot { it.length <= 3 }
println(res)

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

kotlinList<String> ["abcd", "abcde"]

Пример

Отфильтруем словарь, оставив только записи со значениями меньше 100:

kotlinval map = mapOf("a" to 50, "b" to 150, "c" to 75, "d" to 200)
val res = map.filterNot { it.value < 100 }
println(res)

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

kotlinMap<String, Int> {b=150, d=200}

Пример

Использование filterNot с множеством:

kotlinval set = setOf(10, 20, 30, 40, 50)
val res = set.filterNot { it > 25 }
println(res)

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

kotlinList<Int> [10, 20]

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

  • функцию filter,
    которая фильтрует элементы по условию
  • функцию filterNotNull,
    которая фильтрует null-значения
  • функцию filterIndexed,
    которая фильтрует элементы с учетом индекса
  • функцию filterIsInstance,
    которая фильтрует элементы по типу