原创:Java8中,hashmap的容量大小为什么必须是2的幂次方?
时间:2024-09-17 15:06来源: 作者:admin 点击:
17 次
文章浏览阅读2.6k次,点赞24次,收藏26次。Java8中,hashmap的容量大小为什么必须是2的幂次方?最近在复习基础知识,在复习到hashmap的时候,看到hashmap的容量大小必须是2的幂次方,我当时脑子想到的就是:为了使每一个桶发生哈希冲突的概率相同,从而避免某些桶大量发生哈希冲突,而
那个问题是不少进修hashmap都会有想过的,为啥啊?当初我也是那么想的。。
一、理解hashmap的索引计较
那里就不画红黑树了,归正我也不会。
知识点:
当链表长度抵达8并且数组长度大于就是64就转为红黑树,当链表长度小于6就转为链表。
当链表长度抵达8但数组长度小于就是64就选择扩容,将数组长度乘以2
扩容阈值=数组长度*负载因子
当整个数组的所有容质大于扩容阈值时就停行扩容
索引便是往hashmap存值时,计较key的索引,而后选择往哪个数组存值
计较索引位置的公式为:(n - 1). (责任编辑:) |
------分隔线----------------------------