在Kotlin中,您可以创建如下 map :

val items = mapOf("a" to 1, "b" to 2)

并检索如下所示的值:

val item = items["a"]

括号将调用get函数.看看Kotlin的 map 源代码,我看到的get函数是这样的:

public operator fun get(key: K): V?

我找不到get的任何实现,所以不清楚Kotlin如何在内部找到 map 项.

推荐答案

根据您创建Kotlin映射的方式,可能会创建不同的实现.但在mapOf("a" to 1, "b" to 2)的具体情况下,将创建kotlin.collections.LinkedHashMap.LinkedHashMaps实施取决于目标平台.更多信息可以在这里找到:What does a LinkedHashMap create in Kotlin?.如果目标平台是JVM,那么底层实现是Ifjava.util.HashMap,它的Get函数.

Kotlin相关问答推荐

如何在Kotlin中模拟www.example.com()?

升级使用jOOQ Gradle插件生成代码失败

我需要后台工作才能使用卡夫卡的消息吗?

用A*搜索算法解决特修斯和米诺陶尔难题

如何定义一个函数来接受任何具有特定字段的数据类

在 Kotlin 中将 Array 转换为 IntArray 时丢失值

Kotlin 获取继承类的默认 hashCode 实现

gradle 如何 Select 以-jvm结尾的库?

验证构造函数中的值组合

我可以在 Kotlin 中使用接口类型作为构造函数参数吗

多个不同的指针输入

为空数组添加值

添加 Kapt 插件后 - 执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障

SpringBoot 2.5.0 对于 Jackson Kotlin 类的支持,请在类路径中添加com.fasterxml.jackson.module: jackson-module-kotlin

比较 Kotlin 中的可比对象列表

IntentService (kotlin) 的默认构造函数

Firestore - 如何在 Kotlin 中排除数据类对象的字段

Kotlin - computed var 属性的用处?

Android Studio - java.io.IOException:无法生成 v1 签名

Android studio,构建kotlin时出现奇怪错误:生成错误代码