直接说区别:
1. hashMap没加锁,hashTable加锁了。
hashMap大部分都是单线程操作,效率比hashTable效率高(效率高大多数情况下线程都不怎么安全),在多线程并发情况下会造成死锁问题。
hashTable:每一个方法都加了同步锁,因此适合多线程并发。
注:Hashtable线程安全,底层通过synchronized关键字锁住当前对象,锁的细粒度太大,导致并发性能太差
2.继承的父类不同
hashMap继承AbstractMap类。
hashTable继承Dictionary类。
3.初始容量和扩容大小不同
hashMap默认初始容量为16,扩容为原长度2倍。
hashTable默认初始容量为11,每次扩容2n+1。
4.hashMap的key和value可以为null值
5.Hashtable比HashMap多一个elements方法
相同处:
1.都实现了 map,cloneable serializable 接口
以上摘抄自
底层在自己主页的另一个文章,就不写了