2016-11-08 6 views
0

Ich versuche, ein Array von ArrayLists von Strings in Java zu machen, weil ich eine Liste von Wörtern für jeden Buchstaben des Alphabets brauche. Ich mache auf diese Weise in:Array ArrayLists in Java

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

Aber ich bin immer einen Nullpointer wenn ich versuche, etwas zu meiner Liste hinzuzufügen.

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

Ich habe auch versucht, es zu schaffen, wie die

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

Aber es hat die Situation nicht verändert. Bitte hilf mir mein Problem zu lösen.

+1

Welche Linie die Ausnahme auslöst? Meine Annahme wäre die 'if'-Anweisung, weil' leters' null ist und nicht das Array. Lesen Sie hierzu: [So erstellen Sie ein minimales, vollständiges und ** überprüfbares ** Beispiel] (http://stackoverflow.com/help/mcve). – Andreas

+2

Auch warum 25? Es gibt 26 Buchstaben im Basisalphabet. Viele Sprachen haben mehr als das. – Andreas

+1

Kann nicht reproduziert werden: [IDEONE] (http://ideone.com/yO81XQ). Wie Sie vielleicht bemerken, fehlt der Buchstabe Z, da Sie nur 25 Buchstaben haben. – Andreas

Antwort

4

würde ich eine Hash-Karte verwenden:

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

Dann können Sie Wörter hinzufügen, indem Sie:

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