HashMap源码流程分析图
2022-04-09 11:34:38 1 举报
HashMap的源码分析流程图
作者其他创作
大纲/内容
直接返回下标对应node的value
线程1
否
获取最新的内存值sign=true
扩容(resize())
Main内存sign=false
Main内存sign=true
判断当前的数组容量是否大于MIN_TREEIFY_CAPACITY
是否是红黑树
线程2
结束
CPU内存sign=false
node数组为空或者length ==0
判断计算出来的下标下数组元素是否为空
红黑树中插入元素
判断当前node数组下标对应的node是否是一个treeNode
判断当前下标的key的hash值是否跟插入的key的hash值一样或者对象的地址值是否相等
判断当前这个下标对应的node是否是一个treeNode(红黑树)
是
CPU内存sign=true
node数组是否为空或者长度是否为0
开始
强制刷新内存
put操作流程图
强制过期内存
扩容resize()
计算数组的下标
红黑树转链表
内存值无变化
执行链表转红黑树方法
直接值覆盖
遍历node数组将当前的node加到最后一个node的next指针
直接插入当前下标中
HashMap分析
根据Key的值计算hash值
判断树节点的元素是否小于6个
调用红黑树的查找方法找到对应的节点然后返回value
get操作流程图
计算当前key存放到数组的下标(数组的大小-1&key的hash值)
判断当前这个node的长度是否大于8(TREEIFY_THRESHOLD)
判断当前的容量是否超过了阈值(threshold=当前node数组大小*扩载因子[0.75])
收藏
收藏
0 条评论
回复 删除
下一页