1. 继承的父类不同
******************************************************************************************************************************
2. 线程安全性不同、
hashtable里面的成员函数被synchronized修饰,影响了性能但是是线程安全的。
hashmap里面的成员函数没有被synchronized修饰,线程不安全,有可能导致“覆盖”等情况。
******************************************************************************************************************************
3. hashcode的计算方法不同
hashtable中就是对长度取余操作
hashMap中并没有直接使用KV中K原有的hash值; 在HashMap的put、get操作时也未直接使用K中原有的hash值,而使用了一个hash()方法。其中也调用了native方法使用C++进行hashcode计算。
使用了&运算符,右移16位来提高运算效率并减少哈希碰撞。太强了。
https://www.cnblogs.com/NathanYang/p/9427456.html
******************************************************************************************************************************
4.扩容的扩容量不同、初始化时机和初始化容量不同
******************************************************************************************************************************