美文网首页
HashMap的容量为什么建议是2的幂次方?

HashMap的容量为什么建议是2的幂次方?

作者: 魏诚书 | 来源:发表于2019-07-26 12:38 被阅读0次

    HashMap的容量为什么建议是2的幂次方?

    这其实不是一个好问题。

    首先,HashMap的容量并没有什么“建议”2的幂次方。

    这里其实搞混了几个概念

    HashMap的基础是桶数组

    动态数组在扩容时会以2倍形式扩容,设该数组为A,所需要存储的HashMap表为S

    A的基础大小是1的话,它的扩容后的结果是2的次幂来算的

    但如果A的基础数值不是1,比如是37,那么A的大小就会是37与2次幂的积

    也就是HashMap其实不是问HashMap

    容量也不是S表的容量,而是承载S数组A的大小

    正常这到题答出这两点就可以了

    另外要注意的是HashMap的实现是个大坑,不同语言不同库的处理方式可能各有取舍。要能答出大体重要部分如:

    1压缩映射:常见的如除法和MAD方法

    2冲突解决:分离地址(众多标准库采用的方法),装填因子再散列等

    3专有还是通用等,比如37就可以作为处理英文字符的专用散列表的初始容量

    相关文章

      网友评论

          本文标题:HashMap的容量为什么建议是2的幂次方?

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