美文网首页
HashMap和HashTable的区别

HashMap和HashTable的区别

作者: 柒浅丶Belief | 来源:发表于2019-05-08 21:36 被阅读0次

    HashMap:存储无序,键唯一,通过重写hashcode和equals方法保证唯一性,键值可存储为null,有containsValue和containsKey方法,线程不同步,效率上比HashTable要高,适合单线程环境,底层由数组和链表构成(JDK8后容量达到8链表会转换成红黑树),初始容量为16,负载因子为0.75,当容量达到当前容量*0.75时,扩容每次为2的指数,容量设置为16和扩容因子为2是为了减少哈希碰撞,HashMap 的迭代器(Iterator)是 fail-fast 迭代器。

    HashTable:继承的是Dictionary,存储无序,键唯一,HashTable不允许存储null键值,线程是同步的,适合多线程环境,HashTable 中数组默认大小是 11 ,扩容方法是 old * 2 + 1,HashTable的 enumerator 迭代器不是 fail-fast 的。

    总结:一般现在不建议用 HashTable。

    主要原因是两点:

            一是,HashTable 是遗留类,内部实现很多没优化和冗余。

             二是,即使在多线程环境下,现在也有同步的 ConcurrentHashMap 替代,没有必

            要因为是多线程而用Hashtable

    相关文章

      网友评论

          本文标题:HashMap和HashTable的区别

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