美文网首页
HashMap初始容量为什么是2的n次幂及扩容为什么是2倍的形式

HashMap初始容量为什么是2的n次幂及扩容为什么是2倍的形式

作者: Jsolo | 来源:发表于2020-06-15 11:56 被阅读0次

1.容量是2的n次幂,可以使得添加的元素均匀分布在HashMap中的数组上,减少hash碰撞,避免形成链表的结构,使得查询效率降低!
详情查看
https://blog.csdn.net/apeopl/article/details/88935422

2.jdk1.7扩容是重新计算hash;jdk1.8是要看看原来的hash值新增的那个bit是1还是0好了,如果是0则索引没变,如果是1则索引变成"原索引+oldCap".这是jdk1.8的亮点,设计的确实非常的巧妙,即省去了重新计算hash值得时间,又均匀的把之前的冲突的节点分散到新的数组bucket上

jdk1.7在rehash的时候,旧链表迁移到新链表的时候,如果在新表的数组索引位置相同,则链表元素会倒置,但是jdk1.8不会倒置
详情查看

https://blog.csdn.net/qq_17555933/article/details/92759659

相关文章

网友评论

      本文标题:HashMap初始容量为什么是2的n次幂及扩容为什么是2倍的形式

      本文链接:https://www.haomeiwen.com/subject/kjucxktx.html