一、概览
HashMap的某个桶位如果存储的是单向列表,当向这个桶位继续插入一个元素的时候,这个桶位元素的数量超过
8时,单项列表会转化为红黑树(同时是一个双向列表,jdk1.8之后),且会先转化为双向列表:
二、转化过程
1,运行如下程序,使map底层数组的某个桶位的单向列表”开始“转化为红黑树
按道理,当map-put的元素超过 8*100 = 800时才会扩容数组,所以,当map.put(65, "65")时,table[1]的位置将会是:
此时,table[1]的元素数量(9个)超过8(TREEIFY_THRESHOLD),这个单向列表会被转化为红黑树,但是受
这个数字的影响,数组的长度(现在为8)只有扩容到64之后,才会将单向列表会被转化为红黑树;扩容的过程:参考(参考http:还没写好)。
当map.put(513, "513")时,table[1]的位置将会是:
此时,table[1]的元素数量(9个)超过8(TREEIFY_T