Функция mapKeys
Функция mapKeys
применяет указанную функцию-трансформатор
к каждой паре ключ-значение исходной Map и возвращает новую Map,
где ключи преобразованы согласно функции-трансформатору,
а значения остаются неизменными. Работает только с типами Map
.
Синтаксис
inline fun <K, V, R> Map<out K, V>.mapKeys(
transform: (Entry<K, V>) -> R
): Map<R, V>
inline fun <K, V, R> Map<out K, V>.mapKeys(
destination: MutableMap<R, V>,
transform: (Entry<K, V>) -> R
): MutableMap<R, V>
Пример
Преобразуем ключи Map из строк в их длины:
val map = mapOf("apple" to 1, "banana" to 2, "cherry" to 3)
val res = map.mapKeys { it.key.length }
println(res)
Результат выполнения кода:
Map {5=1, 6=2, 6=3}
Пример
Преобразуем ключи Map с использованием полного синтаксиса:
val map = mapOf("a" to 10, "b" to 20, "c" to 30)
val res = map.mapKeys { entry -> "key_${entry.key}" }
println(res)
Результат выполнения кода:
Map {"key_a"=10, "key_b"=20, "key_c"=30}
Пример
Использование функции с указанием целевой Map:
val 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)
Результат выполнения кода:
MutableMap {"num_1"="one", "num_2"="two", "num_3"="three"}
Пример
Преобразование ключей с изменением типа:
val map = mapOf(1 to "alpha", 2 to "beta", 3 to "gamma")
val res = map.mapKeys { it.key.toDouble() }
println(res)
Результат выполнения кода:
Map {1.0="alpha", 2.0="beta", 3.0="gamma"}
Для каких типов работает
Функция mapKeys
работает только с типами:
Map
MutableMap
HashMap
LinkedHashMap
SortedMap
Не работает с: Array
, List
, Set
и другими типами коллекций.
Смотрите также
-
функцию
mapValues
,
которая преобразует значения Map -
функцию
map
,
которая преобразует элементы коллекций -
функцию
filterKeys
,
которая фильтрует Map по ключам -
функцию
associate
,
которая создает Map из коллекции