HashMap put方法
2024-08-27 02:05:01
HashMap的put方法执行过程可以通过下图来理解,自己有兴趣可以去对比源码更清楚地研究学习。
①.判断键值对数组table[i]是否为空或为null,否则执行resize()进行扩容;
②.根据键值key计算hash值得到插入的数组索引i,如果table[i]==null,直接新建节点添加,转向⑥,如果table[i]不为空,转向③;
③.判table[i]的首个元素是否和key一样,如果相同直接覆盖value,否则转向④,这里的相同指的是hashCode以及equals;
④.判断table[i] 是否为treeNode,即table[i] 是否是红黑树,如果是红黑树,则直接在树中插入键值对,否则转向⑤;
⑤.遍历table[i],判断链表长度是否大于8,大于8的话把链表转换为红黑树,在红黑树中执行插入操作,否则进行链表的插入操作;遍历过程中若发现key已经存在直接覆盖value即可;
⑥.插入成功后,判断实际存在的键值对数量size是否超多了最大容量threshold,如果超过,进行扩容。
最新文章
- Ubuntu学习总结-09 安装 Pycharm
- Mysql插入数据为何要加上"; ` ";(Esc下面那个按键符号)?
- Kernel Methods (3) Kernel Linear Regression
- Error: Could not access the Package Manager. Is the system running?
- Thread create 创建进程
- MVP MVC MVVM 傻傻分不清
- 转载 Javascript继承两种形式详解
- EXT学习之——Ext下拉框绑定以及级联写法
- .Net 使用 Oracle 提供组件访问数据库
- [Ruby on Rails系列]4、专题:Rails应用的国际化[i18n]
- tbr tbn tbc
- 嵌入式系统 Boot Loader
- [TJOI2015]旅游
- java中用MessageFormat格式化json字符串用占位符时出现的问题can't parse argument number
- 使用openresty &;&; minio &;&; thumbor 构建稳定高效的图片服务器
- recovery log直接输出到串口
- [软件研究]对AMH面板的研究
- [工具]Cobalt Strike 3.13 TeamServer for Windows
- 什么是@guid
- 2-初步了解C#-类与对象