HashMap和Hashtable的区别

1 HashMap和Hashtable的区别

HashMap和Hashtable都以key-value(键值对)形式存储数据。两者都使用哈希技术来存储唯一key。

但是,HashMap和Hashtable类还是有一些区别的。

HashMap Hashtable
HashMap是非同步的。意味是线程不安全的。 Hashtable是同步。意味是线程安全的,可以与许多线程共享。
HashMap允许一个null或多个null值。 Hashtable不允许任何null的key或value。
HashMap是JDK1.2中引入的类。 Hashtable是一个遗留类。
HashMap是效率很快。 Hashtable的效率比较低。
我们可以调用以下代码使HashMap线程同步:
Map m = Collections.synchronizedMap(hashMap);
Hashtable本身内部是线程同步的。
HashMap可以使用Iterator遍历。 Hashtable可以使用Enumerator和Iterator遍历。
HashMap中的迭代器是(fast-fail)快速失败的。 Hashtable中的枚举器不是(fast-fail)快速失败的。
HashMap继承AbstractMap类。 Hashtable继承Dictionary类。

 

推荐好课