“put”是否会覆盖现有值?

2022-08-31 12:03:15

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

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

我想把“鸟”改成“鱼”(并保持索引不变)。我可以只做一个简单的,还是我需要删除条目,或者什么?put


答案 1

是的。

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

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

还要记住,将具有类型参数,因为不支持基元类型参数。Map<Integer, String>


答案 2

嗯,只需要添加一行

,看看发生了什么惊人的事情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