Функция mapKeys

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

Синтаксис

kotlininline fun <K, V, R> Map<out K, V>.mapKeys(
  transform: (Entry<K, V>) -> R
): Map<R, V>
kotlininline fun <K, V, R> Map<out K, V>.mapKeys(
  destination: MutableMap<R, V>,
  transform: (Entry<K, V>) -> R
): MutableMap<R, V>

Пример

Преобразуем ключи Map из строк в их длины:

kotlinval map = mapOf("apple" to 1, "banana" to 2, "cherry" to 3)
val res = map.mapKeys { it.key.length }
println(res)

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

kotlinMap {5=1, 6=2, 6=3}

Пример

Преобразуем ключи Map с использованием полного синтаксиса:

kotlinval map = mapOf("a" to 10, "b" to 20, "c" to 30)
val res = map.mapKeys { entry -> "key_${entry.key}" }
println(res)

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

kotlinMap {"key_a"=10, "key_b"=20, "key_c"=30}

Пример

Использование функции с указанием целевой Map:

kotlinval source = mapOf(1 to "one", 2 to "two", 3 to "three")
val destination = mutableMapOf<String, String>()

val res = source.mapKeys(destination) { "num_${it.key}" }
println(res)

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

kotlinMutableMap {"num_1"="one", "num_2"="two", "num_3"="three"}

Пример

Преобразование ключей с изменением типа:

kotlinval map = mapOf(1 to "alpha", 2 to "beta", 3 to "gamma")
val res = map.mapKeys { it.key.toDouble() }
println(res)

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

kotlinMap {1.0="alpha", 2.0="beta", 3.0="gamma"}

Для каких типов работает

Функция mapKeys работает только с типами:

Не работает с: Array, List, Set и другими типами коллекций.

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

  • функцию mapValues,
    которая преобразует значения Map
  • функцию map,
    которая преобразует элементы коллекций
  • функцию filterKeys,
    которая фильтрует Map по ключам
  • функцию associate,
    которая создает Map из коллекции