专栏首页happyJaredHashMap 和 Hashtable 的区别

HashMap 和 Hashtable 的区别

  1. 线程安全: HashMap 是非线程安全的,而 Hashtable 是线程安全的,因为 Hashtable 内部的方法,基本都经过 synchronized 修饰(如果要确保线程安全,建议使用 ConcurrentHashMap );
  2. 执行效率: 因为线程安全的原因,HashMap 要比 Hashtable 效率高;此外,由于 Hashtable 基本被淘汰,最好不要在项目中使用它;
  3. 对 Null key 和 Null value 的支持: HashMap 中,null 可以作为键,这样的键最多可以有一个,但可以有一个或多个键所对应的值为 null;在 Hashtable 中,键和值都不能为 null,否则会直接抛出 NullPointerException;
  4. 初始容量大小和扩容的机制不同 : ① 创建时,如果未指定容量初始值,Hashtable 默认的初始大小为11,之后每次扩充,容量变为原来的 2n+1;HashMap 默认的初始大小为16,之后每次扩充,容量变为原来的2倍; ② 创建时,如果给定了容量初始值,Hashtable 将直接使用给定大小作为初始容量;而 HashMap 会将其扩充为2的幂次方大小,也就是说, HashMap 总是使用2的幂作为哈希表的大小;
  5. 底层数据结构: JDK1.8 以后,HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,会自动将链表转化为红黑树,以减少搜索时间,而 Hashtable 没有这样的机制。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • tensorflow的运行机制

    数据流图是一种计算图结构,其结点表示数学操作(加减乘除等),边表示张量(tensor)流动的方向,因为该框架使用张量流动表示数学计算,因此得名tensorf...

    Steve Wang
  • tensorflow 梯度下降方法小结

    Adam优化算法是首选的梯度下降方式,研究证明它可以以最快的速度逃离鞍点(局部最优点)到达全局最优点。

    Steve Wang
  • Leetcode 142

    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

    anakinsun
  • 算法分析:Oracle 11g 中基于哈希算法对唯一值数(NDV)的估算

    字段的统计数据是 CBO 优化器估算执行计划代价的重要依据。而字段的统计数据可以分为两类:

    数据和云01
  • Batch Norm

    Bactch Normalization通过标准化让激活函数分布在线性区间,结果就是加大了梯度,让模型更大胆的进行梯度下降。

    Steve Wang
  • Adam优化算法

    Adam refer to Adaptive Moment estimation.

    Steve Wang
  • data_structure_and_algorithm -- 哈希算法(上):如何防止数据库中的用户被脱库?

    还记得 2011 年 CSDN 的“脱库”事件吗?当时,CSDN 网站被黑客攻击,超过 600 万用户的注册邮箱和密码明文被泄露,很多网友对 CSDN 明文保存...

    MachineLP
  • 使用QtScript库解析Json数组例子

    本文转载自:http://blog.sina.com.cn/s/blog_671732440100uwxh.html

    ccf19881030
  • CString转换成const char*的一种有效方法

    在Visual Studio 200X下,CString直接转换成const char* 有点困难,下面是自己用的一种可行方案:

    ccf19881030
  • Caffe的依赖

    版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/articl...

    Tyan

扫码关注云+社区

领取腾讯云代金券