(
1 ) HashMap 允许 key 和 value 为 null ,而 HashTable 不允许。
(
2 ) HashTable 是同步的,而 HashMap 不是。所以 HashMap 适合单线程环境, HashTable 适合多线程
环境。
(
3 )在 Java1.4 中引入了 LinkedHashMap , HashMap 的一个子类,假如你想要遍历顺序,你很容易从
HashMap 转向 LinkedHashMap ,但是 HashTable 不是这样的,它的顺序是不可预知的。
(
4 ) HashMap 提供对 key 的 Set 进行遍历,因此它是 fail-fast 的,但 HashTable 提供对 key 的
Enumeration 进行遍历,它不支持 fail-fast 。
(
5 ) HashTable 被认为是个遗留的类,如果你寻求在迭代的时候修改 Map ,你应该使用
CocurrentHashMap 。