我一直在瀏覽IdentityHashMaps的文檔。 IdentityHashMap有一個構造這需要expectedmaxsizeIdentityHashMap和expectedmaxsize
public IdentityHashMap(int expectedMaxSize);
和內部Java使用expectedmaxsize計算能力,如下所示:
// Compute min capacity for expectedMaxSize given a load factor of 2/3
int minCapacity = (3 * expectedMaxSize)/2;
在進一步研究,我發現用戶有望通過expectedmaxsize的一個很好的價值這樣IdentityHashMap不會隨着更多元素的添加而調整大小。
如果嘗試用HashMap來比較這一點,那麼它具有接受參數:initialCapacity構造:
public HashMap(int initialCapacity)
並接受loadfactor和參數:initialCapacity另一個構造:
public HashMap(int initialCapacity, float loadFactor)
這裏就是HashMap的有沒有關於初始容量的指導原則。
顯然,在HashMap和IdentityHashMap中內部數組的大小管理方式存在差異。我不明白爲什麼我們有這種差異?爲什麼Identityhashmap不能提供與Hashmap相同的構造函數?