我是HashTables的新手,我很难理解,碰撞处理的过程,如果我们的空间不足,增加它的容量,以及loadFactor在测量可用空间时如何发挥作用容量?如果可以提供任何代码将真的有帮助和赞赏。旁注:我不允许使用可用的类,所以我必须自己实现它。
这是我从界面覆盖的put方法。
@Override
public String put(String key, String value) {
int i = key.hashCode();
int hash = (i % capacity);
while (table[hash] != null && table[hash].key() != key)
{
if(hash > loadFactor*capacity)
{
capacity = capacity*2;
}
if(hash == TABLE_SIZE)
{
return null;
}
hash = (hash + 1) % capacity;
}
System.out.println("Collision Detected");
String oldKey = table[hash].key();
String oldValue = table[hash].value();
//replace old value with the new
table[hash] = new Entry(key, value);
//return "index " + i + " hash " + hash;
return "Old key: " + oldKey + ", Old Value: " + oldValue;
}