HashMap源码分析
来源:互联网 发布:sdr软件无线电 编辑:程序博客网 时间:2024/06/05 20:04
用法: Map<K,V> hm = new HashMap<K,V>();
存储结构:数组+链表
不同hash值的key的Entry<K,V>存在数组table中----数组存储
每个相同hash值的key的Entry<K,V>用链表存储
HashMap底层维护一个数组,数组中的每一项都是一个Entry
我们向 HashMap 中所放置的对象实际上是存储在该数组当中;
而Map中的key,value则以Entry的形式存放在数组中
而这个Entry应该放在数组的哪一个位置上(这个位置通常称为位桶或者hash桶,即hash值相同的Entry会放在同一位置,用链表相连),是通过key的hashCode来计算的。
通过hash计算出来的值将会使用indexFor方法找到它应该所在的table下标:
put(K,V)方法:
1.判断key是否为空----为空则调用putForNullKey(V value)
2.从key的hashcode中用新的hash算法重新计算hash值----hash(key.hashCode());
3.通过hash值找到table数组的Entry位置
4.table数组的Entry位置为空,则新建一个Entry<K,V>存入数据
5.table数组的Entry位置不为空则用链表指向新的Entry<K,V>
6.新的hash算法:(table数组长度)&(2^n)
get(K)方法:
1.判断key是否为空----为空则调用getForNullKey();
2.从key的hashcode中算出hash值----hash(key.hashCode());
3.通过hash值找到table数组的Entry位置
4.遍历Entry链表的每个元素,用equals(K)方法比较每个元素的key,找到对应点value
Fail-Fast机制(关于线程安全)
HashMap线程不安全,使用迭代器时其它线程修改了map(Iterator通过判断modCount修改次数记录是否改变来确定有没有在修改Map)---抛出修改异常(fail-fast策略)
原理:
1.源码中在执行iterator迭代器的next()方法中,执行checkModification()方法,内部对modCount变量和原来的expextedModCount进行比较,查看是否有改变,改变则抛异常
2.在执行put、remove等修改操作时,会对modCount++
3.所以下面代码会报错
阅读全文
0 0
- 源码分析:HashMap
- 源码分析:HashMap
- HashMap源码分析
- HashMap 源码分析
- HashMap源码分析
- HashMap LinkedHashMap源码分析
- HashMap源码分析
- HashMap 源码分析
- HashMap源码分析
- HashMap源码分析
- HashMap源码分析
- Java HashMap 源码分析
- HashMap源码分析
- java HashMap源码分析
- 源码分析HashMap
- HashMap源码分析
- HashMap源码分析
- HashMap源码分析
- springboot【13】数据访问之整合Mybatis
- 穷举,百鸡问题
- 快速统计二进制中1的个数
- Jenkins 配置 -1 (安装+ssh配置)
- latex 图片的使用
- HashMap源码分析
- 推荐下载 deb 软件包的好地方
- 监测数据报表系统使用和安装说明
- fragment嵌套viewpager viewpager嵌套fragment 的bug
- 模拟三次密码输入
- Huffman编码树
- 判断一个正整数是不是回文数
- 字符串函数模拟实现之strlen函数的三种常见实现方法
- Nvidia-SDK-Code-Sample的学习[5]OverLap、一次乌龙
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
凹透镜的作用
凹透镜图片
凹透镜成像光路图
老花镜是凸透镜还是凹透镜
近视眼镜是凸透镜还是凹透镜
凹造型什么意思
张雨绮各种凹造型
凹的部首
凹阳台和凸阳台图
凹阳台
凹面镜
凹面镜成像
凹面镜的作用
凹面镜成像原理图
凹面镜图片
凹面镜的应用
凹面镜对光线有什么作用
女性尿意很强但是尿不出
出什么意什么成语
女性有尿意尿不出
总有便意又拉不出是怎么回事
女生有尿意却尿不出是什么病
老是感觉有屎意但又拉不出
腹痛腹胀有便意拉不出屎
五十路中出
奔出江湖路
求生之路为什么不出3
用012法怎么看下期出那路
出云号
出云号航母
出云战记
出云岛
出云传奇
出云岛刷dp阵容
出云岛隐藏冈布奥
不思议迷宫出云岛隐藏
不思议迷宫出云岛神木
悠闲岛主 华书云
开元占经 南云岛主
不可思议迷宫出云岛
不可思议迷宫出云岛隐藏