[英]Putting element into HashMap with Map interface
我正在尝试 Kotlin,但遇到了一个我无法解决的小问题。 当我有以下结构时,我可以将元素放入地图中:
val map = HashMap<String, String>()
map["asd"] = "s"
map.put("34", "354")
但是,当我使用Map
界面创建地图时,我只能读取它们,我做错了什么?
val map: Map<String, String> = HashMap<String, String>();
map.put("24", "34") //error
map["23"] = "23" //error
或者我对 Kotlin 中的接口有些困惑?
在使用 kotlin 集合时,一个重要的考虑因素是,kotlin 将其集合分类为可变和不可变的。 这与 java 形成对比,java 不存在这样的分类。
在 kotlin 中,对于大多数集合,您有一个仅支持只读方法的基本接口。 在你的情况下Map<K,V
就是一个例子,来自文档
此接口中的方法仅支持对地图的只读访问; 通过 MutableMap 接口支持读写访问。
这就是在val map: Map<String, String> = HashMap<String, String>();
map 之后尝试修改映射时出错的原因val map: Map<String, String> = HashMap<String, String>();
,尽管实际对象是HashMap<String,String>
,但map
引用是Map<String,String>
,它只会提供只读操作。
现在,如果您使用实现MutableMap<K,V>
的类,那么您也可以将值放入 map 中。 val map = HashMap<String, String>()
就是这种情况,因为这里的map
类型是HashMap<K,V>
,它扩展了MutableMap<K,V>
,因此是可变的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.