HashMap中put方法的流程图
2020-10-05 12:22:27 31 举报
登录查看完整内容
HashMap put方法流程图
作者其他创作
大纲/内容
e.hash == hash && ((k = e.key) == key || (key != null && key.equals(k)))
++size>threshold
数组索引、逻辑判断
是
否
p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k)))
resize();扩容
table[i]是否为treeNode
table.length<64
开始遍历链表
直接插入
扩容
链表长度是否大于8
尾插法,插入新节点
table[i] == null
table是否为null Or length==0
执行剩余树形化逻辑······
是否遍历到链尾
直接覆盖该节点
链表
继续下一循环
红黑树
ph==h&&((pk = p.key) == k || (k != null && k.equals(pk))
红黑树putTreeVal处理逻辑:存在该节点则返回,不存在则进行插入节点
插入新节点
start
根据key计算hash得到插入数组索引i
直接覆盖value
end
![HashMap中put方法的流程图](https://www.processon.com/chart_image/template/thumb/5f7a9f837d9c0806f2640fba.png?tid=5f79e844e401fd06fd776763)
收藏
![xxx中心非/统一身份认证集成](https://www.processon.com/chart_image/template/thumb/60bdf499e0b34d0950a32f45.png?tid=60bdf499e0b34d0950a32f43)
收藏
0 条评论
回复 删除
下一页