Hashtable和HashMap的区别

作者: Jeffbond | 来源:发表于2016-03-22 10:30 被阅读171次

    Hashtable和HashMap类的作用一样,都是用来存储kv对。实际上,它们拥有相同的接口。Hashtable和HashMap的区别如下:

    1. Hashtable的方法是同步的,HashMap的方法不是同步的。这是两者最主要的区别。

    这就意味着Hashtable是线程安全的,HashMap不是线程安全的。HashMap效率较高,Hashtable效率较低。
    如果对同步性或与遗留代码的兼容性没有任何要求,建议使用HashMap。
    查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized关键字,而HashMap的源码中则没有。

    1. Hashtable不允许null值,HashMap允许null值(key和value都允许)

    2. 父类不同:Hashtable的父类是Dictionary,HashMap的父类是AbstractMap

    3. Hashtable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

    相关文章

      网友评论

        本文标题:Hashtable和HashMap的区别

        本文链接:https://www.haomeiwen.com/subject/xlxllttx.html