使用Map接口将元素放入HashMap
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 中的接口感到困惑?
在第一个例子中map获取的是HashMap的类型,
在第二个示例中,您将其转换为接口映射。
地图是只读地图,没有put/set,见here
为了能够编辑地图,您应该使用MutableMap
在使用 kotlin 集合时,一个重要的考虑因素是,kotlin 将其集合分为可变和不可变两类。这与 java 形成对比,后者不存在此类分类。
在 kotlin 中,对于大多数集合,您有一个仅支持只读方法的基本接口。在你的情况下 Map<K,V
是一个例子,来自文档
Methods in this interface support only read-only access to the map;
read-write access is supported through the MutableMap interface.
这就是当您尝试在 val map: Map<String, String> = HashMap<String, String>();
之后修改映射时出错的原因,即使实际对象是 HashMap<String,String>
类型,但 map
引用是类型Map<String,String>
,只提供只读操作
现在,如果您使用实现 MutableMap<K,V>
then you can put values in map as well. this is the case with val map = HashMap<String, String>()
, since here type of map
is HashMap<K,V>
的 class,它扩展了 MutableMap<K,V>
,因此是可变的。
我正在尝试使用 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 中的接口感到困惑?
在第一个例子中map获取的是HashMap的类型, 在第二个示例中,您将其转换为接口映射。
地图是只读地图,没有put/set,见here
为了能够编辑地图,您应该使用MutableMap
在使用 kotlin 集合时,一个重要的考虑因素是,kotlin 将其集合分为可变和不可变两类。这与 java 形成对比,后者不存在此类分类。
在 kotlin 中,对于大多数集合,您有一个仅支持只读方法的基本接口。在你的情况下 Map<K,V
是一个例子,来自文档
Methods in this interface support only read-only access to the map; read-write access is supported through the MutableMap interface.
这就是当您尝试在 val map: Map<String, String> = HashMap<String, String>();
之后修改映射时出错的原因,即使实际对象是 HashMap<String,String>
类型,但 map
引用是类型Map<String,String>
,只提供只读操作
现在,如果您使用实现 MutableMap<K,V>
then you can put values in map as well. this is the case with val map = HashMap<String, String>()
, since here type of map
is HashMap<K,V>
的 class,它扩展了 MutableMap<K,V>
,因此是可变的。