Map源码讲解1
数组,链表,>7(7版本以上)红黑树
数组的读的时间复杂度O(1)
数组的写的时间复杂度O(n)
链表的读的时间复杂度O(n)
链表的写的时间复杂度O(1)
红黑树平均时间复杂度O(log(n))
使哈希值更加散列(减少哈希碰撞)
计算索引值采用哈希值进行位与运算,所以map的容量必须是2的指数次幂
索引值的运算:计算key的哈希值(执行了多次的异或运算,目的是使哈希值更加散列,减少哈希冲突),然后在位与map容量减一(比如容量16,那就位与15(0000 1111),这样位与的结果就只能是0到15之间)
扩容,扩容到原来的2倍
hashmap的扩容会造成死锁
扩容因子:0.75,为什么是0.75
链表转红黑树的长度是8,为什么是8


浙公网安备 33010602011771号