您的位置:首页 > 其它

一般采用哈希算法的时候,哈希表的长度设为多大?有什么依据?

2012-11-30 10:30 489 查看
hashMap的初始化的长度,

这里使用的策略是循环查出一个大于initialCapacity的2的次方的数,例如 initialCapacity的值是10,那么大于10的数是2的4次方,也就是16

capacity的值被赋予了16,那么实际上table数组的长度是16,之所以采用这样的策略来构建Hash表的长度,是因为2的次方运算对于计算机来说是有相当的效率。

如果数据是10w的话,每条数据50bytes,内存占用也就是5M,并且你更在乎查询速度;

所以

Map map = new HashMap(2^18,0.5);

容量设为2^18=262144,在保证查询复杂度为常数的前提下,负载因子0.5的话, 这个map里面最多可以存贮262144/2个元素,可以满足需求

查询复杂度为常数(O(1)):就是大部分一个桶装一个元素;要达到这个目标,就要保证 容量*负载因子>=元素个数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: