HashMap与HashTable的异同点有哪些
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容介绍了"HashMap与HashTable的异同点有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
网络安全产品和服务安全
数据库信息传输技术
服务器需要配置的吗
浪潮服务器配置管理卡地址
12306是什么数据库
峄城区网络安全大队
互联网思维与科技馆营销
软件开发公司都是it男吗
网络安全法专著
国美互联网科技有限公司
吕梁软件开发商家
网络安全读什么大学
sql数据库例子
辛集廊坊erp网络技术
网络安全实验课思想总结
分片数据报 网络技术
济南网络安全类公司
小型软件开发点击了解更多
数据库网页怎么设计
楚雄服务器
淮安涵金量软件开发公司
求生之路2怎么过滤RPG服务器
财务数据库共享
新沂创新软件开发质量服务
苹果互联网科技都研究什么
在服务器里面什么指令可以赚金币
商用数据库价格
网络技术研发服务
现代战争中的网络安全问题
亿佰互联北京网络技术