Java教程-HashMap和Hashtable之间的区别
HashMap和Hashtable之间的区别
HashMap和Hashtable都用于以键值对的形式存储数据。它们都使用哈希技术来存储唯一的键。
但是HashMap和Hashtable类之间存在许多差异,如下所示。
| HashMap | Hashtable |
|---|---|
| 1) HashMap是非同步的。它不是线程安全的,如果没有适当的同步代码,就不能在多个线程之间共享。 | Hashtable是同步的。它是线程安全的,可以与多个线程共享。 |
| 2) HashMap允许一个空键和多个空值。 | Hashtable不允许任何空键或空值。 |
| 3) HashMap是在JDK 1.2中引入的新类。 | Hashtable是一个旧的类。 |
| 4) HashMap是快速的。 | Hashtable是慢速的。 |
| 5) 我们可以通过调用以下代码将HashMap变为同步的:Map m = Collections.synchronizedMap(hashMap); | Hashtable在内部是同步的,不能取消同步。 |
| 6) HashMap通过迭代器遍历。 | Hashtable通过Enumerator和迭代器遍历。 |
| 7) HashMap中的迭代器是快速失败的。 | Hashtable中的Enumerator不是快速失败的。 |
| 8) HashMap继承自AbstractMap类。 | Hashtable继承自Dictionary类。 |