哈希表的新功能,有一个简单的问题。由于某种原因,谷歌搜索并没有给我一个直接的答案。假设我已经建立了一个<int,String>
哈希表:
myHashtable.put(1,"bird");
myHashtable.put(2,"iguana");
我想将“鸟”更改为“鱼”(并保持索引不变)。我可以做一个简单的put
,还是需要删除该条目,或者什么?
哈希表的新功能,有一个简单的问题。由于某种原因,谷歌搜索并没有给我一个直接的答案。假设我已经建立了一个<int,String>
哈希表:
myHashtable.put(1,"bird");
myHashtable.put(2,"iguana");
我想将“鸟”更改为“鱼”(并保持索引不变)。我可以做一个简单的put
,还是需要删除该条目,或者什么?
put
示例中返回的值,因此我看不到Javadoc的那一部分与您的关系。但是javadoc非常清晰...如果有一个旧值,则将返回。
Answers:
是。
如果已经存在到指定键的映射,则旧值将被替换(并返回)。请参阅Hashtable.put()
。
对于多线程环境,建议使用ConcurrentHashMap
或其他ConcurrentMap
实现。尽管Hashtable
已同步,但现在有更多复杂的实现可用于并发映射,例如GuavaMapMaker
和CacheBuilder
。
还请记住,由于不支持基本类型参数,Map
因此将具有类型参数<Integer, String>
。
the previous value of the specified key in this hashtable, or null if it did not have one
。听起来像是返回了旧值...无论如何回到代码中,都会看看。
null
是一种很好的方法put
,例如可以查看您是否只是一个新钥匙。
int
作为密钥,因为Java会将其自动装箱为Integer。
Map
嗯,只需添加一行
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