HashMap 和 Hashtable 有什么区别?

2019-09-21  

JDK 1.8 中 HashMap 和 Hashtable 主要区别如下:

  • 线程安全性不同。HashMap线程不安全;Hashtable 中的方法是Synchronize的。
  • key、value是否允许null。HashMap的key和value都是可以是null,key只允许一个null;Hashtable的key和value都不可为null。
  • 迭代器不同。HashMap的Iterator是fail-fast迭代器;Hashtable还使用了enumerator迭代器。
  • hash的计算方式不同。HashMap计算了hash值;Hashtable使用了key的hashCode方法。
  • 默认初始大小和扩容方式不同。HashMap默认初始大小16,容量必须是2的整数次幂,扩容时将容量变为原来的2倍;Hashtable默认初始大小11,扩容时将容量变为原来的2倍加1。
  • 是否有contains方法。HashMap没有contains方法;Hashtable包含contains方法,类似于containsValue。
  • 父类不同。HashMap继承自AbstractMap;Hashtable继承自Dictionary。

 

深入的细节,可以参考:

https://www.cnblogs.com/williamjie/p/9099141.html

 

ConstXiong 备案号:苏ICP备16009629号-3