"put"会覆盖现有值吗?

Ben*_*Ben 71 java hashtable hashmap

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

myHashtable.put(1,"bird");
myHashtable.put(2,"iguana");
Run Code Online (Sandbox Code Playgroud)

我想把"鸟"变成"鱼"(并使指数保持不变).我可以做一个简单的put,还是我需要删除条目,或者什么?

Pau*_*ora 83

是.

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

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

还要记住,由于不支持基本类型参​​数,Map因此将具有类型参数<Integer, String>.


Jes*_*han 5

嗯,只需要添加一行就
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
Run Code Online (Sandbox Code Playgroud)