1.同步问题
HashMap它不是线程安全的 。
HashTable是线程安全的 他给每个方法上都加了synchronize关键字 所以效率会比较低
2.继承的父类不同
HashMap继承的父类是 AbstractMap
HashTable继承的父类是 Dictinary
3.键值区别
HashMap 他的key和value都可以是null值;
而HashTable的 key和value不能为空值,空值,直接就抛除异常了
左边是HashMap 右边是HashTable
4.初始容量和初始化方式不同
HashTable的初始容量是11 ,HashTable他是在调用构造方式的时候进行初始化的, HashMap的初始容量是16 ,在put的时候他才会进行初始化
HashMap:
HashTable:
HashMap扩容的时候是扩容了2倍 new Cap 就是容量的意思
HashTable扩容的时候是扩容了2倍+1
5. 计算hash值的方式不同
HashMap:
HashTable: