2016-07-26 82 views
-4

使用我的代码,新值将覆盖先前存储的值,并使用相同的密钥。如何阻止HashMap覆盖以前的密钥值?

这是我的代码:

HashMap<String, String> meMap = new HashMap<String, String>(); 
meMap.put(p.getName(), selState); 
+1

[“一个映射不能包含重复键;每个键最多只能映射一个值。“](https://docs.oracle.com/javase/7/docs/api/java/util/Map.html)将一个新值与已有值-present键将覆盖以前的值。 –

+0

所以我不能动态地将更多值插入哈希映射? – markella

+0

您可以将您的值类型设为'Collection ',并向集合中插入多个值。 –

回答

0

HashMap是一对键/值对象。对于给定的密钥,它只能是一个值。

如果您尝试放置已存在的相同密钥,则将替换该密钥的现有值。

如果你想添加一个新的值,你必须给这个值一个新的键。

+0

可能重复,但所有关键都是一样的。 – markella

+0

我必须为所有对象放置一个id? – markella

+1

所以,你不需要'HashMap'来解决你的问题。如果你需要同一个键的多个值,你可以为每个键插入任何种类的'String'的集合(假设你的'HashMap'中有多个键)。 –

1

如果该键是一样的,您应映射关键值的列表:Map<String, List<String>>

然后更新被映射到特定键值的列表:

List<String> values = map.get(key); 
values.add("new"); 
map.put(key, values); 
+0

我有不同的键......所以我怎么可以动态地把更多的“键,对象”地图? – markella

+0

@markella如果你有不同的键,HashMap将保留这两个键值对。但很显然,你将不同的值放在同一个键上。 – Sufian

+0

我有不同的键和一些值.... – markella

相关问题