Java中HashMap和Hashtable之间的区别是什么?

对于非线程应用程序,哪个更有效?


当前回答

HashMaps为您提供了同步和调试的自由度

其他回答

对于线程应用程序,您通常可以使用ConcurrentHashMap,这取决于您的性能要求。

HashMap和Hashtable都用于以键和值的形式存储数据。它们都使用哈希技术来存储唯一的键。但是HashMap和Hashtable类之间有很多不同,如下所示。

Java中HashMap和Hashtable之间有几个不同之处:

Hashtable是同步的,而HashMap不是。这使得HashMap更适合非线程应用程序,因为非同步对象通常比同步对象执行得更好。哈希表不允许空键或值。HashMap允许一个空键和任意数量的空值。HashMap的子类之一是LinkedHashMap,因此,如果您需要可预测的迭代顺序(默认情况下是插入顺序),您可以很容易地将HashMap替换为LinkedHashMap。如果您使用Hashtable,这将不会那么容易。

由于同步对您来说不是问题,所以我推荐HashMap。如果同步成为问题,您还可以查看ConcurrentHashMap。

HashMap:它是java.util包中可用的类,用于以键和值格式存储元素。

Hashtable:它是一个在集合框架中被识别的遗留类。

除了izb所说的,HashMap允许空值,而Hashtable不允许。

还要注意,Hashtable扩展了Dictionary类,作为Javadocs状态,该类已过时,已被Map接口取代。