美文网首页
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