JDK1.8hashMap图例
2021-01-14 18:58:53 0 举报
jdk1.8hashMap流程图图例
作者其他创作
大纲/内容
put
key:小红value:10next:小黑
table扩容
!onlyIfAbsent || oldValue == null
initialCapacity:初始化容量loadFactor:扩容因子(0.75f)
……
key:小明value:10next:小刚
new hashMap(initialCapacity)
判断p是否属于TreeNode(红黑树)
是
key:小黑value:10next:小白
否
转为红黑树
比对p的hash、key和当前待存入元素的hash、key相等
++size > threshold
比对e的hash、key和当前待存入元素的hash、key相等
lohead
18
判断table是否为空
lotail
0
1
break
当转为红黑树时,此时的链表长度为9
newNode()
hihead
e!=null
key:小刚value:10next:
binCount= 8 - 1
否,自选查找该链表的下一个元素
16
3
e.value = value;
初始化
32
put(key,value);
key:小黑value:10next:
e=p.next为null
e=p
init()
2
hitail
初始化table
0 条评论
回复 删除
下一页