我朋友今天问我一个面试问题.
有没有办法防止/避免Hashmap?采访者提供了一个线索,可以避免重复使用钩子
我试着查看HashMap代码,看起来就像它碰到它重新加载的加载因子一样
将负载因子设置为更高的值只能延迟重新散列过程
我很困惑,如果可能的话,可以防止重复
如果有人可以指出我正确的方向,它可以帮助
是的,如果您事先知道hashmap的大小,则可以避免这种情况.
设置loadFactor= 1(默认值为0.75)
initialCapacity= size of hashmap + 1(默认值为16).
使用以下构造函数来实例化hashmap
public HashMap(int initialCapacity, float loadFactor)
Run Code Online (Sandbox Code Playgroud)
这将起作用,因为在HashMap类的下面的代码片段中,条件(size >= threshold)永远不会被满足,因此哈希表永远不会调整大小.
void addEntry(int paramInt1, K paramK, V paramV, int paramInt2)
{
if ((size >= threshold) && (null != table[paramInt2]))
{
resize(2 * table.length);
paramInt1 = null != paramK ? hash(paramK) : 0;
paramInt2 = indexFor(paramInt1, table.length);
}
createEntry(paramInt1, paramK, paramV, paramInt2);
}
Run Code Online (Sandbox Code Playgroud)