hashmap底层实现(红黑树)简单了解

hashmap底层实现(红黑树)简单了解_第1张图片

**以下是具体的put过程(JDK1.8版)1、对Key求Hash值,然后再计算下标**

2、如果没有碰撞,直接放入桶中(碰撞的意思是计算得到的Hash值相同,需要放到同一个bucket中)

3、如果碰撞了,以链表的方式链接到后面

4、如果链表长度超过阀值( TREEIFY THRESHOLD==8),就把链表转成红黑树,链表长度低于6,就把红黑树转回链表

5、如果节点已经存在就替换旧值

6、如果桶满了(容量16*加载因子0.75),就需要 resize(扩容2倍后重排)


**以下是具体get过程(考虑特殊情况如果两个键的hashcode相同,你如何获取值对象?)**

当我们调用get()方法,HashMap会使用键对象的hashcode找到bucket位置,找到bucket位置之后,会调用keys.equals()方法去找到链表中正确的节点,最终找到要找的值对象。


你可能感兴趣的:(hashmap底层实现(红黑树)简单了解)