例如,如果我分配一个大小为 100 的 Hashmap,并且如果创建了 100 个存储桶,那么 Hashmap 的性能会不会很差?(因为执行模块化散列不会在所有 100 个桶中均匀分配密钥)
java如何处理这个问题?它是否随机选择接近 100 的素数作为 Hashmap 大小?
正如您在源代码中看到的那样,它选择了下一个最大的 2 次幂(第 197 行 ff):
// 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];