简体   繁体   中英

Why hashtable is empty?

I am trying to store keywords from text file in a hashtable then read another text file with a long string, split it into words, put it in an array, and loop to compare the hashtable values with the array values if equals or not.

hash table function

The output of sysout h value is:

{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}
{}

The fucntion i use in main to compare the values of text file with the values in the hashtable is

public static void main(String[] args) throws IOException {
        hash_table keyword = new hash_table();
        String text, t, thisline;
        text = "";
        BufferedReader br = new BufferedReader(new FileReader("words/TextFile.txt"));

        while ((thisline = br.readLine()) != null) {
            if (thisline.length() > 0) {
                text += " " + thisline;
            }
        }
        String[] array = text.split("\\ ", -1);

        int len = array.length;
        for (int i = 0; i < len; i++) {
            t = array[i];
            for (Map.Entry<String, String> entry : keyword.hashtable().entrySet()) {
                if (entry.getValue().equals(t)) {
                    System.out.println("same");

                }
            }
        }
    }

another thing, when i change

        if (entry.getValue().equals(t)) {

with

        if (!entry.getValue().equals(t)) {

which it should sysout "same" but it didn't.

I was trying for hours to fix it without success, hope someone can help!

Replace this code

while ((thisline = br.readLine()) != null) { // Will Iterate until br.readLine returns null
    //System.out.println(thisline);
}

while (thisline != null) { // this variable is null, so, this chunk of code is never executed.
    line = br.readLine();
    h.put("" + i, line);
    i++;
}
System.out.println(h); // retrun empty

return h;

With this

    while ((thisline = br.readLine()) != null) {
        h.put("" + i, thisline);
        i++;  
    }
    System.out.println(h);

    return h;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM