Функция filterNot
Функция filterNot возвращает новую коллекцию,
содержащую только те элементы исходной коллекции,
которые не удовлетворяют заданному условию (предикату).
Функция принимает в качестве параметра лямбда-выражение
с условием фильтрации и возвращает отфильтрованную коллекцию.
Синтаксис
// Для Iterable, Collection, List, Set
inline fun <T> Iterable<T>.filterNot(
predicate: (T) -> Boolean
): List<T>
// Для Array
inline fun <T> Array<out T>.filterNot(
predicate: (T) -> Boolean
): List<T>
// Для Map
inline fun <K, V> Map<out K, V>.filterNot(
predicate: (Entry<K, V>) -> Boolean
): Map<K, V>
Для каких типов коллекций работает
Функция filterNot доступна для следующих типов коллекций:
Array- массивыList- спискиSet- множестваMap- словариIterable- любые итерируемые коллекцииCollection- базовые коллекции
Пример
Отфильтруем массив чисел, оставив только нечетные числа:
val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val res = numbers.filterNot { it % 2 == 0 }
println(res)
Результат выполнения кода:
List<Int> [1, 3, 5, 7, 9]
Пример
Отфильтруем список строк, оставив только строки длиной больше 3 символов:
val strings = listOf("a", "ab", "abc", "abcd", "abcde")
val res = strings.filterNot { it.length <= 3 }
println(res)
Результат выполнения кода:
List<String> ["abcd", "abcde"]
Пример
Отфильтруем словарь, оставив только записи со значениями меньше 100:
val map = mapOf("a" to 50, "b" to 150, "c" to 75, "d" to 200)
val res = map.filterNot { it.value < 100 }
println(res)
Результат выполнения кода:
Map<String, Int> {b=150, d=200}
Пример
Использование filterNot с множеством:
val set = setOf(10, 20, 30, 40, 50)
val res = set.filterNot { it > 25 }
println(res)
Результат выполнения кода:
List<Int> [10, 20]
Смотрите также
-
функцию
filter,
которая фильтрует элементы по условию -
функцию
filterNotNull,
которая фильтрует null-значения -
функцию
filterIndexed,
которая фильтрует элементы с учетом индекса -
функцию
filterIsInstance,
которая фильтрует элементы по типу