实现线性探测Java

时间:2014-11-08 20:15:07

标签: java hashcode

我正在尝试实现线性探测方法。现在,我来到这一点:

public class LinearProbing<Key, Value> {
private int size = 300001;
private Value[] value = (Value[]) new Object[size];
private Key[] key = (Key[]) new Object[size];

public Value put(Key thiskey, Value thisval) {
    int hash = thiskey.hashCode();
    for (int i = hash; key[i] != null; i = (i + 1) % size) {
        if(key[i] == hash)
        break;
        key[i] = thiskey;
        value[i] = thisval;
    }
}
}

在此之后,我有点困惑。以下是我的疑惑:

  1. 当我检查this.key == hash的相等性时,我得到一个错误,说我无法比较Key和int。所以我决定从hashcode方法返回Object并将其与this进行比较。键[I] .equals(hashObject)。但是这样做是违反的,因为hashcode方法返回Javadoc中的int,我希望保持这种方式。我该如何解决这个问题?
  2. 如果我不清楚,请告诉我。

0 个答案:

没有答案