2011-03-24 57 views
6

我在java中有一個hashmap,我需要追加一個字符串到一個特定的鍵。這段代碼是否正確?或者調用.get方法來檢索原始內容不是一個好習慣?如何將字符串附加到HashMap元素?

myMap.put("key", myMap.get("key") + "new content") ; 

感謝

回答

13

如果你的意思是你想用一個新值替換當前值,這是絕對的罰款。

請注意,如果密鑰不存在,您將以「新內容」作爲新值,這可能不是您想要的。您可以想做的事:

String existing = myMap.get("key"); 
String extraContent = "new content"; 
myMap.put("key", existing == null ? extraContent : existing + extraContent); 
+0

*「我需要將一個字符串附加到一個特定的鍵」。*您的解決方案附加到地圖中的值。 – aioobe 2011-03-24 14:11:48

+2

@aioobe:帕特里克的代碼與他所說的相矛盾。 – Jeremy 2011-03-24 14:14:28

+0

@aioobe:我解釋爲「我需要將一個字符串附加到與一個特定鍵關聯的值」。也許OP會澄清... – 2011-03-24 14:18:10

3

我在Java中的HashMap和我需要一個字符串追加到一個特定的密鑰。

您將需要刪除映射,並添加一個新的映射與更新的密鑰。這可以在一行中完成,如下所示。

myMap.put(keyToUpdate + toAppend, myMap.remove(keyToUpdate)); 

Map.remove方法刪除映射,並返回先前映射值

1

如果你經常這樣,你不妨使用StringBuilder。

Map<String, StringBuilder> map = new LinkedHashMap<String, StringBuilder>(); 

StringBuilder sb = map.get(key); 
if (sb == null) 
    map.put(key, new StringBuilder(toAppend)); 
else 
    sb.append(toAppend);