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) 收藏 举报
浙公网安备 33010602011771号