如何将字符串附加到HashMap元素?

7
我在Java中有一个哈希图,我需要将一个字符串追加到一个特定的键上。这段代码正确吗?或者调用.get方法检索原始内容不是一个好的做法吗?
myMap.put("key", myMap.get("key") + "new content") ;

谢谢

3个回答

16

如果你想要用新的值替换当前值,那是完全可以的。

但请注意,如果这个键不存在,你将会得到 "nullnew content" 作为新值,这可能不是你想要的。你可能希望做如下处理:

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

我需要将一个字符串附加到特定的键上。您的解决方案将附加到映射中的一个值。 - aioobe
@aioobe:我理解为“我需要将一个字符串附加到与一个特定键相关联的值”。也许OP会澄清一下... - Jon Skeet

3
我在Java中有一个哈希表,需要向其中一个特定的键添加字符串。您需要删除映射,并添加一个新的映射,其中包含更新后的键。可以使用以下一行代码完成此操作。
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接