【发布时间】:2011-03-04 06:11:23
【问题描述】:
下面的代码是删除哈希表中元素的安全方法吗?
Enumeration keys = siCache.keys(); //siCache is Hashtable
while(keys.hasMoreElements())
{
String k = (String) keys.nextElement();
Object v = siCache.get(k);
if(condition) siCache.remove(k);
}
【问题讨论】:
-
我不明白为什么这些元素会被转换为
String。HashTable.remove需要密钥本身,而不是它的toString。如果您的情况出于某种原因需要String,那很好,但不要使用 ity 作为HashTable.remove的参数 -
好像。您认为这不安全有什么特别的原因吗?
-
@Jon_darkstar 问:toString() 与强制转换为 String 有什么关系?答:没什么。
-
对,好点。我最近不怎么用java。尽管如此,我关于选角目的的问题仍然存在,即使该细节已关闭