我一直在浏览IdentityHashMap. 该类有一个构造函数,它采用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)
…以及另一个接受and的构造函数:loadfactorinitialcapacity
public HashMap(int initialCapacity, float loadFactor)
......这里HashMap没有关于initialcapacity.
HashMap很明显,内部数组的大小在和中管理的方式有所不同IdentityHashMap。我不明白为什么我们会有这种差异?为什么不能IdentityHashMap提供与 相同的构造函数HashMap?