可以在hashmap中避免重复吗?

Ven*_*han 5 java hash hashmap

我朋友今天问我一个面试问题.

有没有办法防止/避免Hashmap?采访者提供了一个线索,可以避免重复使用钩子

我试着查看HashMap代码,看起来就像它碰到它重新加载的加载因子一样

将负载因子设置为更高的值只能延迟重新散列过程

我很困惑,如果可能的话,可以防止重复

如果有人可以指出我正确的方向,它可以帮助

Neh*_*ari 5

是的,如果您事先知道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)