开发者社区> 问答> 正文

HashMap 长度是2的幂次方,这个算法应该如何设计呢?

HashMap 长度是2的幂次方,这个算法应该如何设计呢?

展开
收起
叫我饭啊啊 2021-10-25 17:09:11 2549 0
1 条回答
写回答
取消 提交回答
  • 我们首先可能会想到采用%取余的操作来实现。但是,重点来了:“取余(%)操作中如果除数是2的幂次则等价于与其除数减一的与(&)操作(也就是说 hash%length==hash&(length-1)的前提是 length 是2的 n 次方;)。” 并且 采用二进制位操作 &,相对于%能够提高运算效率,这就解释了 HashMap 的长度为什么是2的幂次方。

    2021-10-25 17:09:31
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载