在下面的示例中,名为omeCompany的 map 的一个值中有一个名为omePerson的 map

val somePerson = mapOf("name" to "Tim", "age" to "35")

val someCompany = mapOf("boss" to somePerson, "sector" to "accounting")

我认为在嵌套的映射中获取一个值会很简单.让我有点惊讶的是,这个天真的解决方案竟然没有奏效:


val a = someCompany["boss"]

val myOutput = a["name"] //I expected myOutput to be 'Tim', but this doesn't work 

如何提取嵌套映射中的值?

推荐答案

你必须这样宣布你的 map :

val somePerson = mapOf("name" to "Tim", "age" to "35")
val otherPerson = mapOf("name" to "Tom", "age" to "25")

val someCompany = mapOf("boss" to somePerson, "sector" to otherPerson)

您的sameCompany map 需要具有相同类型的数据才能正常工作

您可以使用get()方式访问person中的name个:

val person = someCompany["boss"]
val name = person?.get("name")

附注:如果您真的想使用不同类型的数据创建 map ,您可以将检索到的值转换为您的首选类型(但我不推荐这样做,因为它不安全):

val person = someCompany["boss"] as? Map<String, String>
val name = person?.get("name")

Kotlin相关问答推荐

Fleet无法从构建文件自动重新加载更改错误'

在kotlin中使用List(mylist. size){index—TODO()}或Map迭代>

Kotlin -从列表中获取特定过滤器的唯一列表值

如何避免使用公共类实现内部接口

Kotlin Coroutine()是如何工作的?S阻止了.

Kotlin stlib中是否有用于将列表<;对<;A,B&>;转换为对<;列表<;A&>,列表<;B&>;的函数

S使用MAP和ElseThrow的习惯用法是什么?

如何通过更改现有数据类型来执行Android房间数据库迁移?

Eclipse:无法安装 Kotlin 插件

JavaFX - 你如何在 Kotlin 中使用 MapValueFactory?

嵌套数组 indexOf()

为什么我们在 kotlin 中需要 noinline?

在 Kotlin 中,当枚举类实现接口时,如何解决继承的声明冲突?

API 'variant.getJavaCompile()' 已过时

使用 Paging 3 时保存并保留 LazyColumn 滚动位置

Kotlin suspend fun

面临一些未知问题一些后端jvm内部错误

如何在Kotlin中获得KType?

在Kotlin中为Android编写库会有开销吗?

如何在 IntelliJ IDEA 中禁用粘贴时将 Java 转换为 Kotlin?