HashMap与HashTable的异同点有哪些
发表于:2024-10-06 作者:千家信息网编辑
千家信息网最后更新 2024年10月06日,本篇内容介绍了"HashMap与HashTable的异同点有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2024年10月06日HashMap与HashTable的异同点有哪些
本篇内容介绍了"HashMap与HashTable的异同点有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
相同点: 1>都是Map的子类。 2>都是基于Entry数组实现的。 不同点: 1>HashMap多线程下是不安全的,HashTable是线程安全的。 2>HashMap的key和value都允许为null,HashTable的key和value都不允许为null(key或value为null时会抛出空指针异常)。 3>HashMap的默认容量是16,扩容后的容量是之前的2倍;HashTable的默认容量是11,扩容后的容量是之前的2倍+1。 4>获取bucket的方式不同: ------------------------------------------------- HashTable获取数组下标的方式:取模法 代码: int hash = hash(key); int index = (hash & 0x7FFFFFFF) % tab.length; 说明: 1)根据key获得一个hashValue[注:hashValue=hash(key)&0x7FFFFFFF],然后用hashValue对数组的长度取模得到数组的下标,即:hashValue%length 2)取模法基本能保证元素在哈希表中散列的比较均匀,但是取模会用到除法运算,效率很低。 ------- HashMap获取数组下标的方式:按位与 代码: int hash = hash(key); int i = indexFor(hash, table.length); static int indexFor(int h, int length) { return h & (length-1); } 说明: 1)根据key获得一个hashValue[注:hashValue=hash(key)],然后用hashValue对length-1进行按位与运算得到数组的下标,即:hashValue&(length-1) 2)数组的length必须是2的整数次幂,原因如下: 第一:若length是2的整数次幂,则hashValue&(length-1)等价于hashValue%length,那么hashValue&(length-1)同样也实现了均匀散列,但是(位运算)效率会更高。 1>归纳: 2^1 -1 = 0000 0001 2^2 -1 = 0000 0011 2^3 -1 = 0000 0111 2^n -1 = 0000 (n个1) 2>举例: 若:hashValue=29,length=16 则:hashValue & (length -1) ==> 29 & (2^4-1) ==> 00011101 & 00001111 = 00001101 ==> 13 ==> 0<= hashValue & (length -1) <=length -1 hashValue % length ==> 29 % 16 ==> 13 ==> 0<= hashValue % length <=length -1 故:hashValue & (length -1) == hashValue % length 3>结论:当length=2^n时,hashValue & (length -1) == hashValue % length,且二者的结果范围都是:0到length-1之间的整数。 第二:若length为奇数,则length-1为偶数,偶数(二进制)的最后一位是0,从而导致hashValue&(length-1)的最后一位永远为0, 即:hashValue&(length-1)的结果永远为偶数,最终导致数组中下标为奇数的空间全部被浪费掉。 -------------------------------------------------
"HashMap与HashTable的异同点有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数组
下标
容量
偶数
方式
运算
异同
不同
安全
代码
内容
奇数
效率
更多
知识
线程
结果
实用
相同
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
家游网络技术有限公司
apple软件开发哪家收费合理
先锋服务器不兼容怎么办
阴阳师转服务器需要多少钱
网络安全培训简报标题中学生
微电影 游戏网络安全
网络安全工作具体做什么工作
河南网诸葛网络技术有限公司
数据库可视化分析图形
深入开展网络安全督导检查
构建网络安全教育平台
双阳区智能化网络技术有哪些
室内动画设计软件开发论文
数据库执行时间查看
rman迁移数据库
asp服务器安全性
铜官区网络安全
第一次启动jade数据库
服务器设备管理制度
怎样破解数据库
it数据库都是什么
网络技术专业热门吗
软件开发与项目管理专业有哪些
html服务器拒绝访问怎么办
台湾电子期刊数据库
数据库技术栈有哪些
松江区创新数据库成本
人均运维服务器
服务器修改网卡模式
五点网络安全主张