Fork me on GitHub

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

posted @ 2021-02-08 20:34  Catalinas  阅读(76)  评论(0)    收藏  举报