当我尝试使用哈希表类时,Netbeans给了我一个错误说:
虽然仍然支持,但这些类已被JDK1.2集合类淘汰,并且可能不应该用于新开发。
但是,我似乎无法在网上找到更好地替换Hashtable
的示例。有什么建议吗?
答案 0 :(得分:33)
答案 1 :(得分:7)
至于过时,我没有提及它,但Javadoc声明:
与从Java 2平台v1.2开始,这个类被改装为 实现
Map
接口,使其成为。{ Java Collections Framework
Hashtable
不同, HashMap
已同步。
答案 2 :(得分:4)
您应该使用HashMap,但它不适用于可以使用ConcurrentHashMap
的并发环境。
OR
Map<K,V> myMap = Collections.synchronizedMap(/*any map instance*/);
答案 3 :(得分:3)
您可以使用Hashmap:
Map<String, Integer> mymap = new HashMap<String, Integer>();
答案 4 :(得分:3)
有些情况下,您控制之外的方法需要Hashtable
。
Java自己的javax.management.ObjectName
是
这样的例子 [1] 。
当外部接口需要时,您必须使用Hashtable
。
在netbeans中,您可以使用:
@SupresssWarnings("UseOfObsoleteCollectionType")
在本地禁止警告。
见
1:我想知道为什么他们使用Hashtable
而不是HashMap
,因为ObjectName
是
自1.5以来可用,Hashtable
自1.2以来已过时。
答案 5 :(得分:1)
<强>摘要强>
最接近的替代品是HashMap(通常通过Map界面)。
但请注意,Hashtable是线程安全的,而HashMap则不是。 在大多数情况下这不是问题,并且有意使大多数Java集合非线程安全,以避免大多数常见场景的性能损失。但是如果你依赖Hashtable线程安全并且现在需要一个也是线程安全的替换,那么你有两个选择: