我有一个名为translations的MutableMap。我想将其克隆到另一个MutableMap或Map中。我已经用以下方法做到了:translations.map { it.key to it.value }.toMap()
这并不适合我。有没有更惯用的方式来克隆MutableMap?

最佳答案

Kotlin 1.0.x标准库未定义复制 map 的惯用方式。更加惯用的方式是map.toList().toMap(),但是有时在Kotlin中最惯用的方式是简单地定义自己的extensions。例如。:

fun <K, V> Map<K, V>.toMap(): Map<K, V> = when (size) {
    0 -> emptyMap()
    1 -> with(entries.iterator().next()) { Collections.singletonMap(key, value) }
    else -> toMutableMap()
}

fun <K, V> Map<K, V>.toMutableMap(): MutableMap<K, V> = LinkedHashMap(this)

以上扩展功能与release 1.1-M03 (EAP-3)中定义的功能非常相似。

kotlin/Maps.kt at v1.1-M03 · JetBrains/kotlin:

关于kotlin - 克隆MutableMap的惯用方式是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40916806/

10-10 18:25