java - 在 Kotlin 中将嵌套 Map 复制到 MutableMap

标签 java android kotlin

给定一个嵌套的不可变映射:

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/

相关文章:

java - 为什么 JSTL 在图像 blob 数据的空检查中返回误报?

java - 获取多个字符串数组并将其写入一行打印

android - EmojiCompat 的自定义字体

android - 在我的 android 应用程序中显示 PDF 文件

android - 使用 kotlin 的 Android 应用程序中的静态类方法

android - 如何在 Jetpack Compose 中将 NavigationRail 的内容居中(menuGravity 缺失)

java - 如何忽略 Okhttp 中的 SSL 错误?

java - 在 JFrame Java 中闪烁

android - 以编程方式滚动的表格布局

java - Kotlin/Java - 测试数据库数据提供的 REST API