example converted assignment hashmap kotlin

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.