HashTables碰撞处理和重新散列

时间:2014-03-18 03:18:47

标签: java

我是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;
}

0 个答案:

没有答案