Java 用于测试哈希表的函数显然没有任何原因而失败

Java 用于测试哈希表的函数显然没有任何原因而失败,java,hashtable,Java,Hashtable,这是一个分配,用于创建哈希表和与之交互的各种方法,还提供了一个类来测试它,在创建所述哈希表和方法,然后运行测试类之后,出现了一个无法解释的问题。其中一个测试是使用实现的方法输入字符串并找到它们 Integer temp = new Integer(0); for (int k = 0; k < 200; ++k) { // this function creates 200 unique strings and s = (new Integer(k)).toStr

这是一个分配,用于创建哈希表和与之交互的各种方法,还提供了一个类来测试它,在创建所述哈希表和方法,然后运行测试类之后,出现了一个无法解释的问题。其中一个测试是使用实现的方法输入字符串并找到它们

 Integer temp = new Integer(0);
 for (int k = 0; k < 200; ++k) {       // this function creates 200 unique strings and
     s = (new Integer(k)).toString();  // inserts them into the hash table
     h.insert("R"+s+"C"+s);
 }

boolean fail = false;
for (int k = 0; k < 200; ++k) {        // this function tries to find each string that
    s = (new Integer(k)).toString();   // was inserted into the hash table
    if (!h.find("R"+s+"C"+s) ) {
     fail = true;
    }
}
这是用于查找插入字符串的find方法,它适用于除给定函数之外的所有其他情况。它到达if语句并跳转到findDoubleHash方法。 调试显示,哈希表中的字符串和要查找的字符串这两个值实际上是相同的,应该返回true。然而,情况并非如此,原因尚未找到解决办法

正如我所说的,测试表明这个函数是唯一存在问题的实例,任何输入或帮助都将非常感谢,因为这是为什么


谢谢你

新的Integerk.toString;可以写入Integer.toString。它看起来更好,并且避免了分配。这里的==是正确的比较运算符吗?尝试.equals方法。将==更改为.equals会使函数给出NullPointerException,但允许它在任何其他实例中正常工作。这意味着什么?编辑:在整个find和findDoubleHash方法中替换这些已修复我们的问题!:你有比特币地址吗?我们想提示您。在调用前检查对象是否为null。equals可避免NullPointerException。为什么不使用哈希表的标准实现HashSet?
public boolean find(String key) {

    String stringKey = key;
    int hashToFind;

    StringHashCode sH = new StringHashCode(arraySize);

    hashToFind = sH.giveCode(stringKey);

    if ( HashTable[hashToFind] == stringKey) {    // this is where the method checks whether
                                                  // or not the place in the hash table matches
                                                  // the string we're trying to find

        System.out.println(stringKey + " was found in index " + hashToFind);
        return true;

    } else {

            return findDoubleHash(hashToFind, key);

    }
}