什么是在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.toMapMap.toMutableMap创建副本。

使用putAll方法:

 val map = mapOf("1" to 1, "2" to 2) val copy = hashMapOf<String, Int>() copy.putAll(map) 

要么:

 val map = mapOf("1" to 1, "2" to 2) val copy = map + mapOf<String, Int>() // preset 

你的方式也看起来对我来说是惯用的。

建议的做法是:

 map.toList().toMap() 

但是,java的方法要快2到3倍:

 (map as LinkedHashMap).clone() 

无论如何,如果它困扰着克隆Kotlin的收藏(没有统一的方式),请在这里投票: https : //youtrack.jetbrains.com/issue/KT-11221