什么是在Kotlin复制地图最聪明的方法?
我想获得一个具有相同内容的Map的新实例,但Map没有内置的copy
方法。 我可以做这样的事情:
val newInst = someMap.map { it.toPair() }.toMap()
但它看起来相当丑陋。 有没有更聪明的方法来做到这一点?
只需使用HashMap
构造函数:
val original = hashMapOf(1 to "x") val copy = HashMap(original)
更新Kotlin 1.1:
由于Kotlin 1.1 ,扩展函数Map.toMap
和Map.toMutableMap
创建副本。
使用putAll
方法:
val map = mapOf("1" to 1, "2" to 2) val copy = hashMapOf() copy.putAll(map)
要么:
val map = mapOf("1" to 1, "2" to 2) val copy = map + mapOf() // preset
你的方式也看起来对我来说是惯用的。
建议的做法是:
map.toList().toMap()
但是,java的方法要快2到3倍:
(map as LinkedHashMap).clone()
无论如何,如果它困扰着克隆Kotlin的collections(没有统一的方式),请在这里投票: https : //youtrack.jetbrains.com/issue/KT-11221