Функция filterIsInstance
Функция filterIsInstance
выполняет фильтрацию коллекции,
оставляя только те элементы, которые являются экземплярами указанного типа.
Возвращает новую коллекцию того же типа, что и исходная.
Функция доступна для различных типов коллекций: Array
, List
,
Set
, Map
и других.
Импорт
import kotlin.collections.filterIsInstance
Синтаксис
// Для Array
inline fun <reified R> Array<*>.filterIsInstance(): List<R>
// Для Iterable (List, Set)
inline fun <reified R> Iterable<*>.filterIsInstance(): List<R>
// Для Map
inline fun <reified K, reified V> Map<*, *>.filterIsInstance(): Map<K, V>
Пример
Отфильтруем элементы массива разных типов, оставив только строки:
val mixedArray: Array<Any> = arrayOf(1, "abcde", 3.14, "12345", true)
val stringArray: List<String> = mixedArray.filterIsInstance<String>()
println(stringArray)
Результат выполнения кода:
List<String> ["abcde", "12345"]
Пример
Отфильтруем элементы списка, оставив только числа типа Int
:
val mixedList: List<Any> = listOf("text", 42, 3.14, 100, 'c')
val intList: List<Int> = mixedList.filterIsInstance<Int>()
println(intList)
Результат выполнения кода:
List<Int> [42, 100]
Пример
Отфильтруем элементы множества, оставив только числа типа Double
:
val mixedSet: Set<Any> = setOf(1, 2.5, "hello", 3.14, 2.5)
val doubleSet: List<Double> = mixedSet.filterIsInstance<Double>()
println(doubleSet)
Результат выполнения кода:
List<Double> [2.5, 3.14]
Пример
Отфильтруем элементы словаря, оставив только пары с ключами типа String
и значениями типа Int
:
val mixedMap: Map<Any, Any> = mapOf(
"one" to 1,
2 to "two",
"three" to 3,
4.0 to 4
)
val stringIntMap: Map<String, Int> = mixedMap.filterIsInstance<String, Int>()
println(stringIntMap)
Результат выполнения кода:
Map<String, Int> {one=1, three=3}
Смотрите также
-
функцию
filter
,
которая выполняет фильтрацию по пользовательскому условию -
функцию
filterNotNull
,
которая фильтрует null-значения из коллекции -
функцию
map
,
которая преобразует элементы коллекции -
функцию
distinct
,
которая удаляет дубликаты из коллекции