Java 是否存在哈希表优于concurrenthashmap的场景?
我们都知道ConcurrentHashMap在性能上更好,但是我们可以有任何Hashtable更好的场景吗 在回答问题之前,我会这样说:不要再使用Java 是否存在哈希表优于concurrenthashmap的场景?,java,collections,Java,Collections,我们都知道ConcurrentHashMap在性能上更好,但是我们可以有任何Hashtable更好的场景吗 在回答问题之前,我会这样说:不要再使用哈希表了Hashtable是Java 1.0中的一个遗留工具,在Java 2引入高级集合框架之前 如果需要简单的哈希映射,请使用HashMap。如果需要执行线程安全,请使用ConcurrentHashMap。如果需要普通的基本线程安全性和不良线程安全性,请将HashMap包装到Collections.synchronizedMap(Map)中 现在实际
哈希表了Hashtable
是Java 1.0中的一个遗留工具,在Java 2引入高级集合框架之前
如果需要简单的哈希映射,请使用HashMap
。如果需要执行线程安全,请使用ConcurrentHashMap
。如果需要普通的基本线程安全性和不良线程安全性,请将HashMap
包装到Collections.synchronizedMap(Map)
中
现在实际回答这个问题,这是一个纯粹比较两个特定类别的问题,没有看到各种可能性:
是的,这种情况是存在的
从:
如果不需要线程安全的实现,建议使用HashMap代替Hashtable。如果需要线程安全的高并发实现,则建议使用ConcurrentHashMap代替Hashtable
因此,是的,Hashtable
适用于需要线程安全实现,但不“渴望”高度并发实现的场景。这也是严格意义上的ConcurrentHashMap
和Hashtable
之间的排他性比较
此外,如果您需要枚举
[1],哈希表
有直接的支持,而您必须通过集合。枚举(…)
用于其他映射
的操作
一,<代码>枚举
也是一个Java 1.0类。切换到Iterator
(如果使用Java 2到7)或Stream
(如果使用Java 8+)您应该对苹果进行比较,这意味着Collections.synchronizedMap(new HashMap())
和ConcurrentHashMap
Hashtable
只不过是一个遗留问题,自从上次触及Hashtable
以来,HashMap
有很多改进。这是一个不完整的建议,因为synchronizedMap(new HashMap())
比Hashtable
好。我认为Hashtable已经过时了