1. 同步性
HashTable中所有的方法都是加了synchronize关键字,线程是同步的,所以每次调用方法都需要排队,效率非常低!!一般多线程情况下 用的是ConcurrentHashMap,因为它是对方法内部的局部代码块进行同步(也就是分块同步),效率远大于HashTable
2. 对null key和null value的支持不同
如图HashMap在计算 key的哈希值时,如果key为null默认为0,否则是当前key的哈希值和自己的高十六位进行与运算(因为int为32位,高,低十六都参与运算可以使得哈希散列更加均匀)。HashTable在传入Key和Value时,key和value为空都会抛出空指针异常。因为空指针不能调用方法。
3.初始值和扩容方式不同