Функция filterIsInstance

Функция filterIsInstance выполняет фильтрацию коллекции, оставляя только те элементы, которые являются экземплярами указанного типа. Возвращает новую коллекцию того же типа, что и исходная. Функция доступна для различных типов коллекций: Array, List, Set, Map и других.

Импорт

kotlinimport kotlin.collections.filterIsInstance

Синтаксис

kotlin// Для Array
inline fun <reified R> Array<*>.filterIsInstance(): List<R>
kotlin// Для Iterable (List, Set)
inline fun <reified R> Iterable<*>.filterIsInstance(): List<R>
kotlin// Для Map
inline fun <reified K, reified V> Map<*, *>.filterIsInstance(): Map<K, V>

Пример

Отфильтруем элементы массива разных типов, оставив только строки:

kotlinval mixedArray: Array<Any> = arrayOf(1, "abcde", 3.14, "12345", true)
val stringArray: List<String> = mixedArray.filterIsInstance<String>()
println(stringArray)

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

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

Пример

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

kotlinval mixedList: List<Any> = listOf("text", 42, 3.14, 100, 'c')
val intList: List<Int> = mixedList.filterIsInstance<Int>()
println(intList)

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

kotlinList<Int> [42, 100]

Пример

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

kotlinval mixedSet: Set<Any> = setOf(1, 2.5, "hello", 3.14, 2.5)
val doubleSet: List<Double> = mixedSet.filterIsInstance<Double>()
println(doubleSet)

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

kotlinList<Double> [2.5, 3.14]

Пример

Отфильтруем элементы словаря, оставив только пары с ключами типа String и значениями типа Int:

kotlinval 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)

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

kotlinMap<String, Int> {one=1, three=3}

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

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