HashMap

基本原理

底层是数组+链表+红黑树

 

核心方法实现

 

 

总结

(1)hash算法:为什么要高位和低位做异或运算?

(2)hash寻址:为什么是hash值和数组.length - 1进行与运算?

(3)hash冲突的机制:链表,超过8个以后,红黑树

(4)扩容机制:数组2倍扩容,重新寻址(rehash),hash & n - 1,判断二进制结果中是否多出一个bit的1,如果没多,那么就是原来的index,如果多了出来,那么就是index + oldCap,通过这个方式,就避免了rehash的时候,用每个hash对新数组.length取模,取模性能不高,位运算的性能比较高,通过这个方式的话,可以有效的将原来冲突在一个位置的多个key,给分散到新数组的不同的位置去

posted on 2021-12-23 14:58  simple_coder  阅读(45)  评论(0)    收藏  举报

导航