HashMap的数组长度为什么要保证为2的幂次方呢?

璐璐 Java面经 发布时间:2022-10-30 09:45:07 阅读数:5015 1 集合容器面试题(2023优化版)
下文笔者讲述HashMap中数组长度需保证为"2的幂次方"原理说明,如下所示
采用"2的幂次方"的目的:
   1.实现快速定位,因为 h&(length-1)才等价于h%length
   2.减少哈希冲突
   3.由于使用的是位运算,所以查询效率比较高
例:
  当length为2的次幂
   即length-1 转化为二进制必定是 11111……的样式
    位操作的效率就是高,就可以快速定位到数组指定位置
	
  当length不是2的次幂
    如length为15,则 length - 1 为 14,对应的二进制为 1110
    在于 h 与操作,最后一位都为0
      而 0001,0011,0101,1001,1011,0111,1101 这几个位置永远都不能存放元素
	  数组很多位置没有放数据,则会增大哈希碰撞的几率,同时造成空间的浪费
	  
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202210/16670943674749.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者