一文读懂HashMap和HashTable的区别以及常见面试题( 六 )
//修改次数增加1
modCount++; //将key、value添加至i位置处
addEntry(hash key value i); return null;
通过源码我们可以清晰看到HashMap保存数据的过程为:首先判断key是否为null , 若为null , 则直接调用putForNullKey方法 。
\n若不为空则先计算key的hash值 , 然后根据hash值搜索在table数组中的索引位置 , 如果table数组在该位置处有元素 , 则通过比较是否存在相同的key , 若存在则覆盖原来key的value , 否则将该元素保存在链头(最先保存的元素放在链尾) 。
\n若table在该处没有元素 , 则直接保存 。 这个过程看似比较简单 , 其实深有内幕 。 有如下几点:
\n1、 先看迭代处 。 此处迭代原因就是为了防止存在相同的key值 , 若发现两个hash值(key)相同时 , HashMap的处理方式是用新value替换旧value , 这里并没有处理key , 这就解释了HashMap中没有两个相同的key 。
推荐阅读
- 地下城堡|《代号:破晓》官网“暗藏”剧情,你都读懂了吗?
- 法术|双城之战:羁绊、海克斯强化、装备一文看懂
- 仙剑奇侠传七|“吃鸡”游戏中单价最高的氪金物品!氪度力压车皮,却一文不值!
- 打野|王者荣耀:S25赛季打野需要注意什么?读懂这篇攻略,轻松上分
- 地下城与勇士|DNF:DNF超高质量减负,9.14减负改动一文看完
- 金泰相|“亚军不配找借口”Doinb谈亚军一文不值,只有S11夺冠才能找回颜面
- 梦幻西游|梦幻西游:老王打错灵犀玉损失5000元,百万无级别变得一文不值
- 电子竞技|电竞精神一文不值,贝克曼惨遭炮轰,久城透露QG假赛隐情!
- 孙一文|王者荣耀孙一文联动实锤?采访透露设计想法,皮肤想要带龙标
- 孙一文|王者荣耀:孙一文想要夏洛特冠军皮肤,两点要求让天美无能为力!