1:连个都实现了Map的接口,两者的底层数据结构相同,都是transient修饰的entry数组,transient修饰的变量不会序列化即不会持久化,序列化的过程中不会包含这个变量,这个变量的生命周期仅仅是在用户的调用过程中,不能持久化到内存磁盘中。这样便于一些敏感信息的保存
2:HashMap是不安全的,不能同步,不支持多线程并发,HashTable是安全的,有同步锁,但效率低。
3:HashMap从AbstractMap继承而来,HashTable是从Dictionary继承而来
4:HashMap允许Null存在,表示key对应的value值不存在或者就是null。而HashTable不能有null
5:HashTable的hash是直接使用对象的hash,而HashMap要重新算起散列值,因而更加散列,有助于减少冲突。提高效率
6:HashTable可以用Itertor来实现遍历,HashMap也可以用这个,但在早起版本中HashTable还可以用Enumeration来遍历
7:HashTable缺省初始化数组的大小是11,可以指定数组的初始化大小,扩容采用的规则是old*2+1,
HashMap缺省的数组大小是16,长度保持2的倍数,扩容时选择大于initCaptiy的最小的2的倍数的大小
8两者都支持FF失败机制