美文网首页
hashmap和hashtable到底有什么区别

hashmap和hashtable到底有什么区别

作者: PENG先森_晓宇 | 来源:发表于2023-10-15 19:24 被阅读0次

    哈希计算方法不同

    hashmap:HashMap计算hash对key的hashcode进行了二次hash,以获得更好的散列值,然后对table数组长度取模。

    hashtable:Hashtable计算hash是直接使用key的hashcode对table数组的长度直接进行取模。

    键值是否可以为空值

    hashmap:HashMap可以使用null作为key,不过建议还是尽量避免这样使用。HashMap以null作为key时,总是存储在table数组的名列前茅个节点上。

    hashtable:Hashtable则不允许null作为key

    初始化容量不同

    hashmap:HashMap 的初始容量为:16。

    hashtable:Hashtable 初始容量为:11。

    两者的负载因子默认都是:0.75

    同步性不同

    hashmap:HashMap是一个不同步的Map,这意味着HashMap是线程不安全的,如果没有适当的同步代码,则无法在多个线程之间共享。

    hashtable:Hashtable是一个同步的Map,Hashtable是线程安全的,可以在多个线程之间共享。如果您需要使用同步的 Map,Hashtable 比在同步包装器中使用 HashMap 更快。

    性能不同

    由于HashMap不是同步的Map,因此在性能方面它比Hashtable更快,更好,实际上,它比Hashtable使用更少的内存。虽然它们实际上是相同的,但Hashtable比HashMap慢一点,但比同步的HashMap快一点。从本质上讲,将 Hashtable 与多线程访问结合使用是不安全的,因为只有方法是同步的。Hashtable是HashMap的同步对应物。与同步对象相比,非同步对象的性能更好,就像 Hashtable 在单线程环境中的性能更好一样。

    相关文章

      网友评论

          本文标题:hashmap和hashtable到底有什么区别

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