Функция filterNotNull
Функция filterNotNull выполняет фильтрацию коллекции,
удаляя все элементы со значением null и возвращая
коллекцию только с ненулевыми элементами. Функция работает
с коллекциями, содержащими nullable-типы, и возвращает
коллекцию с non-null типом элементов.
Импорт
import kotlin.collections.filterNotNull
Синтаксис
// Для Iterable
inline fun <T : Any> Iterable<T?>.filterNotNull(): List<T>
// Для Array
inline fun <T : Any> Array<out T?>.filterNotNull(): List<T>
// Для Map
inline fun <K, V : Any> Map<out K, V?>.filterNotNullValues(): Map<K, V>
Поддерживаемые типы коллекций
Функция filterNotNull доступна для следующих типов коллекций:
Iterable(List, Set)ArraySequence
Для Map доступна отдельная функция filterNotNullValues,
которая фильтрует значения, а ключи остаются без изменений.
Пример
Отфильтруем null-значения из списка строк:
val list: List<String?> = listOf("a", null, "b", null, "c")
val res: List<String> = list.filterNotNull()
println(res)
Результат выполнения кода:
List<String> ['a', 'b', 'c']
Пример
Отфильтруем null-значения из массива чисел:
val array: Array<Int?> = arrayOf(1, null, 2, null, 3)
val res: List<Int> = array.filterNotNull()
println(res)
Результат выполнения кода:
List<Int> [1, 2, 3]
Пример
Использование filterNotNull с Sequence:
val sequence: Sequence<String?> = sequenceOf("x", null, "y", null, "z")
val res: List<String> = sequence.filterNotNull().toList()
println(res)
Результат выполнения кода:
List<String> ['x', 'y', 'z']
Пример
Фильтрация null-значений в Map с помощью filterNotNullValues:
val map: Map<String, Int?> = mapOf("a" to 1, "b" to null, "c" to 3)
val res: Map<String, Int> = map.filterNotNullValues()
println(res)
Результат выполнения кода:
Map<String, Int> {a=1, c=3}
Смотрите также
-
функцию
filter,
которая выполняет фильтрацию по пользовательскому условию -
функцию
filterNot,
которая выполняет обратную фильтрацию -
функцию
filterIsInstance,
которая фильтрует элементы по типу