HashMap的数组长度为什么要保证为2的幂次方呢?
下文笔者讲述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 这几个位置永远都不能存放元素 数组很多位置没有放数据,则会增大哈希碰撞的几率,同时造成空间的浪费
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。