众所周知,ConcurrentHashMap的性能更好,但是我们可以有任何Hashtable更好的场景吗?
答案 0 :(得分:0)
在回答问题之前我会这样说:不再使用Hashtable
。 Hashtable
是Java 1.0中的遗留工具,在Java 2引入的高级集合框架之前。
如果您需要简单的哈希映射,请使用HashMap
。如果您需要执行线程安全,请使用ConcurrentHashMap
。如果您需要简单的基本和不良线程安全性,请将HashMap
打包到Collections.synchronizedMap(Map)
。
现在实际回答问题,这纯粹是比较两个特定的类而没有看到可能的范围:
如果不需要线程安全的实现,建议使用HashMap代替Hashtable。如果需要线程安全的高度并发实现,那么建议使用ConcurrentHashMap代替Hashtable。
所以是的,Hashtable
适用于需要线程安全实现的场景,但不希望“高度并发实现。这同样严格地在ConcurrentHashMap
和Hashtable
之间进行了排他性比较。
此外,如果您需要Enumeration
[1] ,Hashtable
有直接支持,而您必须通过Collections.enumeration(...)
进行其他操作Map
秒。
1。 Enumeration
也是Java 1.0类。切换到Iterator
(如果使用Java 2到7)或Stream
(如果使用Java 8 +)