hashmap - converted - ¿Forma idiomática de transformar el mapa en kotlin?
map kotlin (3)
Encontré otra variante. Parece ser mas claro
val result = mapOf( *hashMap.map { it.key.toUpperCase() to it.value.toUpperCase() }.toTypedArray() )
Se deducirá automáticamente el tipo de mapa resultante.
.toTypedArray()
debe utilizar el operador splat(*)
.
En Scala, es solo la función de map
. Por ejemplo, si hashMap es un hashMap de cadenas, puede hacer lo siguiente:
val result : HashMap[String,String] = hashMap.map(case(k,v) => (k -> v.toUpperCase))
En Kotlin, sin embargo, el map
convierte el mapa en una lista. ¿Hay una manera idiomática de hacer lo mismo en Kotlin?
No creo que la opinión de una persona cuente como idiomática, pero probablemente la usaría
// transform keys only (use same values)
hashMap.mapKeys { it.key.toUpperCase() }
// transform values only (use same key) - what you''re after!
hashMap.mapValues { it.value.toUpperCase() }
// transform keys + values
hashMap.entries.associate { it.key.toUpperCase() to it.value.toUpperCase() }
Podría usar la función stdlib mapValues
que otros han sugerido:
hashMap.mapValues { it.value.toUpperCase() }
Creo que esta es la forma más idiomática.