2016-11-08 35 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);