Функция filterNotNull

Функция filterNotNull выполняет фильтрацию коллекции, удаляя все элементы со значением null и возвращая коллекцию только с ненулевыми элементами. Функция работает с коллекциями, содержащими nullable-типы, и возвращает коллекцию с non-null типом элементов.

Импорт

kotlinimport kotlin.collections.filterNotNull

Синтаксис

kotlin// Для Iterable
inline fun <T : Any> Iterable<T?>.filterNotNull(): List<T>
kotlin// Для Array
inline fun <T : Any> Array<out T?>.filterNotNull(): List<T>
kotlin// Для Map
inline fun <K, V : Any> Map<out K, V?>.filterNotNullValues(): Map<K, V>

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

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

Для Map доступна отдельная функция filterNotNullValues, которая фильтрует значения, а ключи остаются без изменений.

Пример

Отфильтруем null-значения из списка строк:

kotlinval list: List<String?> = listOf("a", null, "b", null, "c")
val res: List<String> = list.filterNotNull()
println(res)

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

kotlinList<String> ['a', 'b', 'c']

Пример

Отфильтруем null-значения из массива чисел:

kotlinval array: Array<Int?> = arrayOf(1, null, 2, null, 3)
val res: List<Int> = array.filterNotNull()
println(res)

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

kotlinList<Int> [1, 2, 3]

Пример

Использование filterNotNull с Sequence:

kotlinval sequence: Sequence<String?> = sequenceOf("x", null, "y", null, "z")
val res: List<String> = sequence.filterNotNull().toList()
println(res)

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

kotlinList<String> ['x', 'y', 'z']

Пример

Фильтрация null-значений в Map с помощью filterNotNullValues:

kotlinval map: Map<String, Int?> = mapOf("a" to 1, "b" to null, "c" to 3)
val res: Map<String, Int> = map.filterNotNullValues()
println(res)

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

kotlinMap<String, Int> {a=1, c=3}

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

  • функцию filter,
    которая выполняет фильтрацию по пользовательскому условию
  • функцию filterNot,
    которая выполняет обратную фильтрацию
  • функцию filterIsInstance,
    которая фильтрует элементы по типу