java如何管理会导致其性能不佳的hashmap大小分配?

java如何管理会导致其性能不佳的hashmap大小分配?,java,hash,hashmap,hashtable,hashcode,Java,Hash,Hashmap,Hashtable,Hashcode,例如,如果我分配一个大小为100的Hashmap,如果创建了100个bucket,那么Hashmap的性能不是很差吗?(因为执行模块散列不会在所有100个存储桶中均匀分配密钥) java如何处理这个问题?它是否随机选择一个接近100的素数作为Hashmap大小 正如您在中看到的,它选择了两次幂中的下一次最大幂(第197行ff): //查找2的幂>=初始容量 int容量=1; 同时(容量

例如,如果我分配一个大小为100的Hashmap,如果创建了100个bucket,那么Hashmap的性能不是很差吗?(因为执行模块散列不会在所有100个存储桶中均匀分配密钥)


java如何处理这个问题?它是否随机选择一个接近100的素数作为Hashmap大小

正如您在中看到的,它选择了两次幂中的下一次最大幂(第197行ff):

//查找2的幂>=初始容量
int容量=1;
同时(容量<初始容量)
容量
       // Find a power of 2 >= initialCapacity
       int capacity = 1;
       while (capacity < initialCapacity)
           capacity <<= 1;

       this.loadFactor = loadFactor;
       threshold = (int)(capacity * loadFactor);
       table = new Entry[capacity];