Функция filterKeys

Функция filterKeys применяется к ассоциативным массивам типа Map и выполняет фильтрацию элементов по ключам. В параметр передается функция-предикат, которая определяет, должен ли ключ быть включен в результирующую коллекцию. Возвращает новую карту, содержащую только те элементы, ключи которых удовлетворяют условию предиката.

Синтаксис

kotlininline fun <K, V> Map<out K, V>.filterKeys(
  predicate: (K) -> Boolean
): Map<K, V>

Пример

Отфильтруем карту, оставив только ключи, длина которых больше 3:

kotlinval map = mapOf("one" to 1, "two" to 2, "three" to 3, "four" to 4)
val res = map.filterKeys { it.length > 3 }
println(res)

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

kotlin{three=3, four=4}

Пример

Отфильтруем карту, оставив только ключи, начинающиеся на букву 't':

kotlinval map = mapOf("apple" to 1, "banana" to 2, "tomato" to 3, "tea" to 4)
val res = map.filterKeys { it.startsWith("t") }
println(res)

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

kotlin{tomato=3, tea=4}

Пример

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

kotlinval map = mapOf(1 to "a", 2 to "b", 3 to "c", 4 to "d", 5 to "e")
val res = map.filterKeys { it % 2 == 0 }
println(res)

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

kotlin{2=b, 4=d}

Для каких коллекций работает

Функция filterKeys работает только с коллекциями типа Map и её наследниками:

Для других типов коллекций (Array, List, Set) функция filterKeys недоступна.

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

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