2016-07-26 85 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

相關問題