添加&#34; double&#34;列出<double> doubleList </double>

时间:2014-11-25 20:32:13

标签: java

我将Double存储到List<Double>时遇到了麻烦。

int idx = 0;
String [] documentText = getText();

for(String word : wordList) {
    wordsDistributionList.put(word, new ArrayList<Double>());
}

// ...

if ( wordsDistributionList.containsKey(word.toLowerCase()) == true ) {

    List<Double> dbls = wordsDistributionList.get(word);

    double dbl = ((double)idx/(double)documentText.length);

    dbls.add(new Double(dbl));
    break;
}

做这样的事情导致:

Exception in thread "main" 
java.lang.NullPointerException
    at worddistribution.DocumentsStatistics.getWordDistribution(DocumentsStatistics.java:57)
    at worddistribution.Main.main(Main.java:34)

有人能告诉我如何在列表中存储Double吗?

2 个答案:

答案 0 :(得分:2)

如果

,则需要初始化列表
List<Double> dbls = wordsDistributionList.get(word);

返回null,然后当您尝试添加Double时,列表将为null。

确保wordsDistributionList.get(word)不返回null,如果确实如此,则显式初始化列表...

喜欢@ZouZou说试试:

List<Double> dbls = wordsDistributionList.get(word.toLowerCase());

但如果仍然返回null,那么问题是你没有初始化你想要返回的列表。

答案 1 :(得分:0)

您正在测试wordsDistributionList(显然是地图而不是列表)是否包含密钥word.toLowerCase(),但是获取密钥word的值。这可能很容易为空。

仅供参考,而不是

if(wordsDistributionList.containsKey(word.toLowerCase()) == true)

只需写下

if(wordsDistributionList.containsKey(word.toLowerCase()))

而不是

dbls.add(new Double(dbl));

只需写下

dbls.add(dbl);

后者称为autoboxing