HashMap和Hashtable的区别
1.
HashMap:允许null作为key和value。
Hashtable:不允许null作为key和value,以null作为key和value时会报空指针异常。
2.
HashMap:线程不安全,效率较高。
Hashtable:线程安全,效率较低。(synchronized实现)
3.
HashMap:使用Iterator迭代器遍历。
Hashtable:使用Enumeration遍历。
4.
HashMap:数组默认大小为16,扩容是将原数组翻倍,都满足2的幂。
Hashtable:数组默认大小为11,扩容是翻倍后+1。
5.
HashMap:对hash值进行了重新计算。
Hashtable:直接使用对象的hashCode方法获得。
6.
HashMap:底层存储结构是数组+单向链表/红黑树。
Hashtable:底层存储结构是数组+单向链表。