1、請查看 hashmap 如何初使化
代碼:
public HashMap(int initialCapacity, float loadFactor) {
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal initial capacity: " +
initialCapacity);
if (initialCapacity > MAXIMUM_CAPACITY)
initialCapacity = MAXIMUM_CAPACITY;
if (loadFactor <= 0 || Float.isNaN(loadFactor))
throw new IllegalArgumentException("Illegal load factor: " +
loadFactor);
// 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];
init();
}
當
Map map = new HashMap(9);
while (capacity < initialCapacity)
capacity <<= 1;
capacity的容量為 16
threshold擴容閥值 16*0.75 =12
和9沒什么關系 哈
當
Map map = new HashMap(9,1);
capacity的容量為 16
threshold擴容閥值 16*1 =16
不過這個 9 變小一點 就不一樣了 如3時capacity 是4