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