开发者社区 问答 正文

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

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

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

    2021-10-25 17:09:31
    赞同 展开评论
问答分类:
问答地址: