测试哈希表的功能失败,显然没有理由

时间:2014-10-25 14:33:48

标签: 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)).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;
    }
}

查找插入值的函数对每个值都失败,声称它不存在。在此函数之外插入和查找值非常合适,并且在其他类中工作,这使我相信程序不同意该函数的某些内容。

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);

    }
}

这是用于查找插入字符串的find方法,除了给定的函数之外,它适用于所有其他情况。它到达if语句并跳过findDoubleHash()方法。 调试显示,值,哈希表中的字符串和要查找的字符串实际上是相同的,应该返回true。然而事实并非如此,并没有找到解决方案的原因。

正如我所说,测试显示此功能是唯一存在问题的实例,任何输入或帮助都会非常感谢为何会出现这种情况。

谢谢

0 个答案:

没有答案