使用Map接口将元素放入HashMap

ash*_*hur 10 java dictionary kotlin

我正在尝试Kotlin,我遇到了一个我无法解决的小问题.当我有以下结构时,我可以将元素放入地图中:

val map = HashMap<String, String>()
map["asd"] = "s"
map.put("34", "354")
Run Code Online (Sandbox Code Playgroud)

然而,当我创建一个带有Map界面的地图时,我只能阅读它们,我做错了什么?

val map: Map<String, String> = HashMap<String, String>();
map.put("24", "34") //error
map["23"] = "23" //error
Run Code Online (Sandbox Code Playgroud)

或者也许我对Kotlin中的接口感到困惑?

D3x*_*ter 12

在第一个示例中,map获取HashMap的类型,在第二个示例中,您将其转换为Interface Map.

Map是一个只读地图,没有put/set,请看这里

为了能够编辑地图,您应该使用MutableMap

  • 来自 Java,重要的是要记住 Map 不是来自 java.util.Map 而是来自 Collections.kt 中定义的 Map。作为 Kotlin 新手,我也被这个问题吸引住了。如上所述 Map 是只读的;使用 MutableMap 更改地图。在 Maps.kt 中还有创建不同地图的辅助方法,即 hashMapOf 等 (2认同)