首页 > 解决方案 > 在 Kotlin 中定义多嵌套/层次结构图的更简单方法

问题描述

目前,如果我必须定义一个类似的嵌套/层次映射Map<String, Map<String, Map<String, String>>>,我必须分别定义每个嵌套映射并使用它们来手动构建层次结构。有没有更简单的方法来声明和定义这样的地图?类似于我在 Javascript 中可以做的事情。

PS:Kotlin 新手

Javascript 示例(假设示例)。

var schema = {
    "US": {
        "WA": {
            "Seattle": "Pike Street"
        }
    },
    "IN" : {
        "Karnataka": {
            "Bangalore" : "MG Road"
        }
    }
};

科特林:

val WA_CITY_TO_ST_MAP = mapOf(
    "Seattle" to "",
    "Redmond" to "1st Ave"
)
val KARNATAKA_CITY_TO_ST_MAP = mapOf("Bangalore" to "MG Road")

val US_STATE_TO_CITIES_MAP = mapOf("WA" to WA_CITY_TO_ST_MAP)
val IN_STATES_TO_CITIES_MAP = mapOf("Karnataka" to KARNATAKA_CITY_TO_ST_MAP)

val schema = mapOf("US" to US_STATE_TO_CITIES_MAP, "IN" to IN_STATES_TO_CITIES_MAP)

标签: kotlin

解决方案


嵌套映射可以内联构建,无需将它们初始化为单独val的 s:

val schema = mapOf(
            "US" to mapOf(
                    "WA" to mapOf(
                            "Seattle" to "",
                            "Redmond" to "1st Ave"
                    )
            ),
            "IN" to mapOf(
                    "Karnataka" to mapOf(
                            "Bangalore" to "MG Road"
                    )
            )
    )

如果您的结构并不总是具有相同级别的嵌套(很像 JSON),您可能需要考虑使用适当的JSON 库来处理您的数据。


推荐阅读