1. Hashtable和HashMap的区别
1.1. Hashtable线程安全, 效率低; HashMap线程不安全, 效率高
1.2. Hashtable父类是Dictionary; HashMap是AbstractMap
1.3. Hashtable键与值不能为null; HashMap键最多一个为null,值可以多个null
2. Hashtable是通过方法体上加synchronized关键字来保证线程安全的, HashMap则没有synchronized关键字
2.1. Hashtable的put方法
2.2. HashMap的put方法
3. Hashtable键与值不能为null。Hashtable使用键直接进行了hashcode换算, 如果键为空就会出现空指针异常。Hashtabl同时对值进行了空值判断, 如果值为空就会抛出一个空指针异常。
4. HashMap键最多一个为null,值可以多个null。HashMap在对键进行hash换算时, 如果发现键为空, hash值就是0, 所以键允许有一个null。HashMap存放时并不关心值, 所以值可以多个空。