给定一个嵌套的不可变映射:
val someNestedMap = mapOf(
2 to mapOf(
"a" to true,
"b" to false,
"c" to true
),
3 to mapOf(
"d" to false,
"e" to true,
"f" to false
)
)
如果我想要这个精确结构的新副本,但每个映射都是可变的,那么在 Kotlin 中是否有一种简单的方法可以做到这一点?
我想创建上述内容的副本 val newCopy: MutableMap<Int, MutableMap<Int, Boolean>>
最佳答案
您可以通过映射键然后转换整个映射来完成此操作:
return immutableMap.mapValues { it.value.toMutableMap() }.toMutableMap()
您可以像这样创建一个通用扩展函数:
fun <K, VK, VV> Map<K, Map<VK, VV>>.toDeeplyMutableMap() =
mapValues { it.value.toMutableMap() }.toMutableMap()
我认为这对于标准库函数的用例来说过于具体。嵌套的可变集合很容易出错。
关于java - 在 Kotlin 中将嵌套 Map 复制到 MutableMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60909403/