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类。 |