有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用线性探测的java哈希表

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方法应该返回key的值,但它没有。我不明白哪里出了错。我用过(=),但还是不工作。谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

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

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

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

    如果您使用的是自定义对象,请确保覆盖key对象上的equals方法

    请阅读此how-to-override-equals-method-in-java了解更多信息