2016-11-08 38 views
0

我想在java中制作一个ArrayLists的String的数组,因为我需要每个字母表中的单词列表。 我在做这样:java中ArrayLists的数组

ArrayList<String>[] letters = new ArrayList[32]; 

但我发现了一个NullPointerException异常当我尝试的东西添加到我的名单。

while ((line = bufferedReader.readLine()) != null) { 
    letter = (int)line.charAt(0) - 1040; 
    if (letters[letter] == null) { 
     letters[letter] = new ArrayList<>(); 
    } 
    letters[letter].add(line); 
} 

我也试着像

ArrayList<String>[] leters = (ArrayList<String>[])new ArrayList[32]; 

创建它,但它并没有改变的情况。请帮我解决我的问题。

+1

哪条线抛出异常?我的猜测是'if'语句,因为'leters'是空的,而不是数组。请阅读以下内容:[如何创建最小,完整和**可验证**示例](http://stackoverflow.com/help/mcve)。 – Andreas

+2

另外,为什么25?基本字母表中有26个字母。许多语言不止这些。 – Andreas

+1

无法重现:[IDEONE](http://ideone.com/yO81XQ)。正如您可能还会注意到的,由于您只有25个字母,因此字母Z丢失。 – Andreas

回答

4

我会用一个哈希表:

HashMap<Character, ArrayList<String>> letters = new HashMap<Character, ArrayList<String>>(); 

然后你就可以做补充的话:

ArrayList<String> words = new ArrayList<String>(); 
words.add(word); 
letters.put("A", words);