“put”会覆盖现有值吗?

时间:2011-08-27 03:23:09

标签: java hashmap hashtable

带有简单问题的哈希表新手。由于某种原因谷歌搜索没有给我一个直接的答案。假设我已经设置了<int,String>哈希表:

myHashtable.put(1,"bird");
myHashtable.put(2,"iguana");

我希望将“bird”改为“fish”(并使索引保持不变)。我可以做一个简单的put,还是需要删除条目,或者什么?

2 个答案:

答案 0 :(得分:75)

如果已存在到指定键的映射,则将替换(并返回)旧值。请参阅Hashtable.put()

对于多线程环境,我建议ConcurrentHashMap或其他ConcurrentMap实施。虽然Hashtable已同步,但现在有更复杂的实现可用于并发映射,例如Guava的MapMakerCacheBuilder

另请注意,Map将具有类型参数<Integer, String>,因为不支持基本类型参​​数。

答案 1 :(得分:4)

嗯,只需要添加一行 myHashtable.put(1,"fish");
看看发生了什么令人惊奇的事情

请参阅此链接:http://docs.oracle.com/javase/6/docs/api/java/util/Hashtable.html#put(K, V)

Returns:
the previous value of the specified key in this hashtable, or null if it did not have one