Frage zu Hashmap in Java?
Ich habe ein csv-File, welches ich einlese und möchte jedesmal, wenn der Key der gleiche ist, die LinkedList (=Werte von der Hashmap) um eins ergänzen. Momentan funktioniert, das ganze aber noch nicht richtig. (Ich vermute, ich ergänze jedesmal die gleiche Liste um den neuen Wert , statt für jeden Key eine neue Liste zu erstellen). Kann mir jemand helfen, wie der Code richtig lauten sollte? Herzlichen Dank.
1 Antwort
Deine Vermutung ist richtig. Wirf die Variable list raus. Im else-Fall gib in put() als zweites Argument „new LinkedList<String>()“ an. Dann geht es weiter wie im then-Fall:
nameWithCantonsMap.get(values[1]).add(values[0]);
Solcher Code ist typisch, wenn eine Map eine aggregierende Klasse als Value hat. Ich schreibe da immer dasselbe Schema:
// 1. Eintrag ggf. erzeugen:
if ( !myMap.containskey(key) )
myMap.put( key, new ... /* List, Map, Set, ... */ );
// 2. Wert anhängen:
myMap.get( key ).add( value );
Das sind zwar zwei Zugriffe auf die Map, aber von einer Map darf man erwarten, dass das flott genug geht.