Java Map底层简单理解 哈希表

Java Map底层简单理解 哈希表

哈希表存储过程分析
每存入一个新的元素都要走以下五步
(1)调用对象的hashCode()方法,获得要存储元素的哈希值。
(2)将哈希值与表的长度(即数组的长度)进行求余运算得到一个整数值,该值就是新元素要存放的位置(即是索引值)。
* 如果索引值对应的位置上没有存储任何元素,则直接将元素存储到该位置上。
* 如果索引值对应的位置上已经存储了元素,则执行第3步。
(3)遍历该位置上的所有旧元素,依次比较每个旧元素的哈希值和新元素的哈希值是否相同。
* 如果有哈希值相同的旧元素,则执行第4步。
* 如果没有哈希值相同的旧元素,则执行第5步。
(4)比较新元素和旧元素的地址是否相同
* 如果地址值相同则用新的元素替换老的元素。停止比较。
* 如果地址值不同,则新元素调用equals方法与旧元素比较内容是否相同。
* 如果返回true,用新的元素替换老的元素,停止比较。
* 如果返回false,则回到第3步继续遍历下一个旧元素。
(5)说明没有重复,则将新元素存放到该位置上并让新元素记住之前该位置的元素。

欢迎点赞关注收藏哦 ,码云搜索KakiNakajima

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KakiNakajima

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值