АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
402 of 1310 menu
Бесплатный тренинг по PHP: форматирование строк. Начало 25 сентября. Жми для записи!

Функция 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,
    которая удаляет дубликаты из коллекции