2017-03-19 1 views
-1

Ich habe Probleme, viele Daten in verschiedene hashMaps zu laden. Ich benutze eine andere Klasse, die alle Decodierung der Datei und die Übertragung auf eine HashMap behandelt. Mein Problem ist, dass ich eine Datei in eine bestimmte hashMap (sagen wir HashMap x) laden werde. Aber wenn ich verschiedene Daten in ex laden musste. hasMap y, hashMap x wird mit dem ganzen Zeug, das hashMap y haben soll, neu geschrieben. Später fand ich heraus, dass einige Schlüssel und Werte aus verschiedenen Dateien kamen, aber einige wurden gelöscht, da hashMap keine Duplikate zulässt. Also ist mein Endergebnis für x und y ein Mashup von Daten aus beiden Dateien in einer hashMap. Ich weiß nicht, wie ich das beheben soll.Datei in Hash-Map-Probleme lesen

Hier ist, was ich bisher:

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.HashMap; 
import java.util.Map; 

public class CodeFileProcessor { 

    private static Map<String, String> codeMap = new HashMap<String, String>(); 

    public static Map<String, String> readCodeFile(String fileName) throws IOException { 
     codeMap.clear(); 
     BufferedReader br = new BufferedReader(new FileReader(fileName)); 
     String nextLine = br.readLine(); 
     while(nextLine != null) { 
      String[] parts = nextLine.split(","); 
      codeMap.put(parts[0], parts[1]); 
      nextLine = br.readLine(); 
     } 
    br.close(); 
    return codeMap; 
    } 
} 
+0

Mögliches Duplikat [? Was bedeutet das ‚statische‘ Schlüsselwort in einer Klasse tun] (http://stackoverflow.com/questions/ 413898/what-does-the-static-Schlüsselwort-in-einer-Klasse) –

+0

Alles unter der Klasse sollte statisch sein. Ich folge einer UML von einem Professor für eine Aufgabe. – Collecto

+0

Ich bin sicher, der Professor möchte, dass Sie tatsächlich lernen, Java-Code zu schreiben. Bitte schauen Sie, was es bedeutet, dass eine Variable "statisch" ist. Sie verwenden die gleiche HashMap immer wieder neu. Wenn es ein Problem oder eine Frage zu den Anforderungen des Professors gibt, warum fragen Sie uns dann nicht danach, anstatt Ihren Professor zu fragen? –

Antwort

0

Ihr Problem sieht aus wie codeMap statisch ist. Sie verwenden im Grunde immer wieder dieselbe Karte, weshalb die Dinge so aussehen, als würden sie überschrieben.

Versuchen Sie, eine neue Karte als Teil des Methodenaufrufes zu erstellen:

//DELETE THIS LINE - private static Map<String, String> codeMap = new HashMap<String, String>(); 

public static Map<String, String> readCodeFile(String fileName) throws IOException { 
    //Create a new map instead of reusing the static (shared) one 
    Map<String, String> codeMap = new HashMap<String, String>(); 
     ... 
+0

Ich folge einer UML für eine Zuweisung. Alles unter dieser Klasse sollte statisch sein. Es sei denn, die UML ist falsch, so sollte es sein – Collecto

+1

Ich denke, Ihre UML ist in diesem Fall falsch. Sie können keine statische Karte haben, wenn Sie mehrere verschiedene Instanzen davon haben möchten (map "x" und "y" aus Ihrer Beschreibung) – Paolo

+0

Okay, danke für die Hilfe – Collecto