HashMap 和 Hashtable 有什么区别?

HashMap 和 Hashtable 有什么区别?

JDK1.8 主要区别如下:

    线程安全性不同。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。

深入的细节,可以参考:


【Java面试题与答案】整理推荐

经验分享 程序员 微信小程序 职场和发展