Java在不覆盖的情况下向现有HashMap键添加另一个字符串值?
我想知道是否有人能够帮助在Java中的HashMap
中向现有键添加另一个String
值
我知道您可以使用this.put("String", "String")
方法添加键值对。但是,它会覆盖现有值,而我希望使用同一个键存储并配对多个值
谢谢你的帮助
你可以在下面搜索框中键入要查询的问题!
我想知道是否有人能够帮助在Java中的HashMap
中向现有键添加另一个String
值
我知道您可以使用this.put("String", "String")
方法添加键值对。但是,它会覆盖现有值,而我希望使用同一个键存储并配对多个值
谢谢你的帮助
# 1 楼答案
将值存储为映射下的列表,所以如果键是test,并且有两个值,比如val1和val2,那么键将是test,值将是包含val1和val2的列表
但是,如果您的目的是为同一个键创建两个单独的条目,那么这并不是为地图设计的。想一想,如果你做地图。获取(“key”),您期望的值是多少
# 2 楼答案
你希望在这里取得什么成就
在您的例子中
Map
(theHashMap
)是从一个“键”到另一个值的直接“映射”例如
这意味着,如果您要尝试:
它将返回值
123
(当然,您返回的值的类型可以是您想要的任何类型)当然,这也意味着您对键的值所做的任何更改都将覆盖您为其指定的原始值,就像更改变量的值将覆盖指定的原始值一样
说:
映射中的旧值
"foo"
将替换为42
。因此,它将成为:但是,如果需要从单个键映射多个
String
对象,可以使用可以存储多个对象的不同对象,例如数组或列表(如果需要,甚至可以使用另一个HashMap
)例如,如果要使用
ArrayLists
,当您为HashMap
赋值时(假设它被称为myHashMap
),您将首先检查该键以前是否使用过,如果没有,则使用要添加的值创建一个新的ArrayList
,如果有,则将该值添加到列表中(假设
key
和value
具有所需的值)# 3 楼答案
正如其他人指出的那样,
Map
by规范对于给定的键只能有一个值。您有两种解决方案:HashMap<String, List<String>>
存储数据# 4 楼答案
如Map interface documentation中所述,映射包含一组键,因此它不能包含多个非唯一键
我建议您使用列表作为此地图的值
# 5 楼答案
你可以这样做
或您可以通过Java 8风格的一行代码来完成同样的事情
# 6 楼答案
您想要两个字符串的串联吗
或者您想要该键的所有值的列表吗