使用线性探测的散列表

时间:2018-03-31 19:32:35

标签: java arrays hash find

public V find(K key){
     for (int i = getHashValue(key); table[i] != null; i = (i + 1) % thesize)
           if (table[i].key == key)
               return table[i].value;
    //if the key not found
          System.out.println(" Could not find '" + key.toString() +"'s value");
        return null;

find方法应该返回键的值,但它没有。我无法理解错误在哪里。我用过(==)但仍然无法正常工作。我很感激你的帮助。

1 个答案:

答案 0 :(得分:0)

如果您确定密钥的值已存在于表中,那么您的问题与==运算符相关,在Java ==中返回true对象,如果两个操作数指向同一个对象(不是等效对象,同一个对象。

所以在这种情况下你必须将你的if转换成如下

   if (key.equals(table[i].key)) 

如果您正在使用自定义对象,请务必覆盖关键对象上的equals方法。

请阅读此how-to-override-equals-method-in-java了解详情