2
例如,如果我分配一個大小爲100的Hashmap,並且如果創建了100個桶,那麼Hashmap的性能會不會很差? (由於執行模塊化哈希將不會均勻分配所有100個桶中的密鑰)java如何管理散列表大小分配會導致它執行不佳?
java如何處理此問題?它是否隨機選擇接近100的素數作爲哈希圖大小?
例如,如果我分配一個大小爲100的Hashmap,並且如果創建了100個桶,那麼Hashmap的性能會不會很差? (由於執行模塊化哈希將不會均勻分配所有100個桶中的密鑰)java如何管理散列表大小分配會導致它執行不佳?
java如何處理此問題?它是否隨機選擇接近100的素數作爲哈希圖大小?
正如你可以在sources看到,它選擇兩個未來最大功率(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];