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

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)):就是大部分一个桶装一个元素;要达到这个目标,就要保证 容量*负载因子>=元素个数

    原文作者:哈希算法
    原文地址: https://blog.csdn.net/zealot_2002/article/details/8242385
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞