数组到HashTable

时间:2012-10-14 09:58:31

标签: java arrays hashtable

我想创建一个哈希表,它将从我的数组中获取每个String并将其分配给唯一的整数值。我的数组从文件中读取并分配给数组,如下所示:

public void readFile() throws Exception{

    FileInputStream in = new FileInputStream("words.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(in));

    String strLine;
    wordsList = new String[getNumberOfLines()];   

    for (int j = 0; j < wordsList.length; j++){
    wordsList[j] = br.readLine();

    }
    in.close();
}

使用这个数组我写了一个方法来创建这样的哈希表:

String currentWord;
private Hashtable <String,Integer> wordsHashTable;
LinesReader lr = new LinesReader();
int i;
String[] listOfWords;

public boolean insertValues() throws Exception{
    for (i=0; i<lr.getNumberOfLines();i++){
        lr.readFile();
        listOfWords = lr.returnsWordList();
        currentWord = listOfWords[i];
        wordsHashTable.put(currentWord, i+1);
    }
    return wordsHashTable.isEmpty(); //testing purposes only
}

它在行处抛出NullPointer异常:wordsHashTable.put(currentWord,i + 1); 我弄乱了什么想法?

3 个答案:

答案 0 :(得分:3)

您必须使用该类的实例初始化wordsHashTable

private Hashtable <String,Integer> wordsHashTable = new Hashtable<>();

但是,请注意Hashtable类已过时;你应该使用java.util.HashMap代替。

答案 1 :(得分:1)

初始化哈希表。你忘了初始化它。

 private Hashtable <String,Integer> wordsHashTable = new Hashtable<>();

答案 2 :(得分:0)

您没有初始化`Hashtable'。

private Hashtable <String,Integer> wordsHashTable = new Hashtable <String,Integer>();

会解决它。

但是,我建议你转向更现代的东西,如HashMap