Kotlin/JS与Kotlin/Native中的MutableMap是否为LinkedHashMap?
Kotlin多平台MutableMap默认迭代顺序说明
Kotlin标准库对所有平台的mutableMapOf()默认返回的MutableMap实例,都明确承诺会保留插入顺序,迭代操作时顺序和插入顺序完全一致,这不是JVM平台的特有特性。
各平台具体实现逻辑如下:
- Kotlin/JVM:正如你了解的,默认
mutableMapOf()返回LinkedHashMap实例,天然支持插入顺序保留,迭代行为完全符合预期。 - Kotlin/JS:底层默认基于ES6标准的
Map对象实现,而ECMAScript规范明确要求JS原生Map必须按照元素插入顺序执行迭代,因此Kotlin/JS的默认MutableMap也严格遵守插入顺序。 - Kotlin/Native:标准库的默认MutableMap底层采用专门的有序哈希表实现,设计上就对齐了其他平台的行为,迭代时同样会严格遵循插入顺序。
注意:以上承诺仅适用于
mutableMapOf()返回的默认MutableMap实例。如果你主动显式创建非有序的Map实现(比如HashMap),无论在哪个平台运行,都不会保证迭代顺序和插入顺序一致。
内容的提问来源于stack exchange,提问作者healthsgood
相关产品推荐
相关产品推荐

