我在java中有一个hashmap,我需要在一个特定的键上附加一个字符串。这段代码是否正确?或者,调用.get方法检索原始内容不是一个好习惯吗?
myMap.put("key", myMap.get("key") + "new content") ;
感谢
答案 0 :(得分:13)
如果您的意思是想用新值替换当前值,那绝对没问题。
请注意,如果密钥不存在,您最终会将“nullnew content”作为新值,这可能不是您想要的。您可能想要这样做:
String existing = myMap.get("key");
String extraContent = "new content";
myMap.put("key", existing == null ? extraContent : existing + extraContent);
答案 1 :(得分:3)
我在java中有一个hashmap,我需要在一个特定的键上附加一个字符串。
您需要删除映射,并使用更新的密钥添加新映射。这可以在一行中完成,如下所示。
myMap.put(keyToUpdate + toAppend, myMap.remove(keyToUpdate));
Map.remove
方法删除映射,并返回先前映射的值
答案 2 :(得分: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);