我有一个名为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/