Hashmap mit geordneter/ungeordneter liste als Value

Tilli

Mitglied
Hallo zusammen!!!!

Ich sitze mal wieder bei den HashMaps fest. Ich möchte gerne folgendes bewerkstelligen...

Ich habe eine textdatei die ich auf tabs splitte.

Auf der linken seite des doppelpunktes stehen die daten die ich als schlüssel benutzen möchte z.b Human, Avian ect. und auf der rechten die werte. Nun ist es aber leider so das einige schlüssel öfters vor kommen. Ich möchte diese ausgabe so bearbeiten, das ich folgende struktur in meiner HashMap habe.

Schlüssel:{Alle werte die für den schlüssel vorkommen}

z.b Human:{H1N1,H2N2....
Avian{H1N1,H5N2}

Daher eine HashMap mit besagtem organismus als schlüssel und einer sortierten/unsortierten liste als wert. Ich finde aber einfach nicht den richtigen ansatz.

Die ausgabe des programmes sieht dann etwa so aus wenn ich die textdatei einlese


Code:
run:
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Avian:H1N1
Avian:H1N1
Camel:H1N1
Human:H3N2
Human:H3N2
Swine:H1
Swine:H1N1
Avian:H5N8
Avian:H5N8
Avian:H7N3
Avian:H2N3
Human:H2N2
Human:H2N2
Avian:H5N2
Avian:H2N8
Human:H3N2
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Avian:H2N9
Human:H1N1
Avian:H3
Avian:H3
Avian:H3
Avian:H3
Avian:H3
Avian:H3
Avian:H3
Avian:H7N1
Equine:H3N8
Avian:H7N7
Human:H1N1
Avian:H7N7
Human:H3N2
Human:H3N2
Human:H1N1
Human:H1N1
Avian:H5N2
Avian:H5N2
Human:H1N1
Human:H3N2
Human:H3N2
Equine:H3N8
Human:H3N2
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Equine:H7N7
Human:H1N2
Human:H1N2
Avian:H8N4
Human:H3N2
Avian:H4N6
Avian:H12N5
Avian:H11N9
Human:H3N2
Avian:H11N6
Human:H3N2
Human:H2N2
Avian:H10N7
Human:H3N2
Avian:H11N9
Human:H1N1
Avian:H11N6
Avian:H7N3
Human:H1N1
Human:H3N2
Human:H2N2
Avian:H6N5
Avian:H5N3
Human:H3N2
Avian:H11N
Avian:H5N9
Human:H1N1
Avian:H9N2
Human:H1N1
Swine:H3N2
Swine:H3N2
Avian:H13N6
Avian:H13N6
Whale:H13N2
Avian:H4N6
Avian:H4N4
Avian:H4N6
Avian:H4N6
Avian:H4N6
Avian:H4
Avian:H4N6
Avian:H4N2
Seal:H4N5
Human:H1N1
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Avian:H7N1
Human:H1N1
Human:H3N2
Human:H1N1
Avian:H2N2
Human:H2N2
Human:H2N2
Human:H3N2
Human:H1N1
Avian:H2N8
Avian:H2N2
Avian:H2N2
Avian:H2N2
Avian:H2N3
Avian:H2N2
Avian:H2N2
Avian:H2N3
Human:H1N1
Avian:H2N2
Human:H2N2
Human:H1N1
Avian:H7N7
Human:H1N1
Human:H1N1
Human:H1N1
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Equine:H3N8
Seal:H3N3
Seal:H3N3
Human:H2N2
Human:H2N2
Human:H2N2
Human:H2N2
Human:H2N2
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Human:H1N1
Swine:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Avian:H5N2
Avian:H5N2
Human:H1
Mink:H10N4
Avian:H10N7
Swine:H3N2
Human:H3N2
Swine:H1N1
Avian:H7N7
Avian:H7N7
Avian:H7N7
Avian:H15N8
Human:H3N2
Avian:H15N9
Human:H1N2
Equine:H3N8
Human:H1N1
Human:H1N1
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Human:H1N1
Equine:H3N8
Swine:H1N1
Avian:H5N1
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Equine:H3N8
Swine:H1
Swine:H1
Swine:H1
Avian:H5
Swine:H1N1
Avian:H5N2
Avian:H5N2
Swine:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Avian:H1N1
Avian:H1N1
Swine:H1N1
Avian:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Avian:H1N1
Avian:H1N1
Avian:H1N1
Avian:H1N1
Avian:H1N1
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Human:H1N1
Avian:H5N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H1N1
Avian:H5N1
Avian:H3N8
Avian:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Avian:H5N1
Avian:H5
Human:H5N1
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H5N1
Human:H7N7
Avian:H7N7
Swine:H1
Swine:H1
Avian:H7N1
Avian:H7N7
Avian:H5N3
Avian:H7N2
Avian:H7N3
Avian:H7
Avian:H7N4
Avian:H7N7
Avian:H7N3
Avian:H7N7
Avian:H7N1
Avian:H7N7
Avian:H7N7
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N2
Swine:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N7
Avian:H5N2
Avian:H5N2
Avian:H5N2
Avian:H5N6
Avian:H5N3
Avian:H5N1
Avian:H5N2
Avian:H5N2
Avian:H5N9
Avian:H5N9
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Swine:H3N2
Swine:H3N2
Swine:H3N2
Swine:H3N2
Swine:H3N2
Swine:H3N2
Swine:H3N2
Swine:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Swine:H1N2
Swine:H1N2
Swine:H1N2
Swine:H1N2
Swine:H1N2
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N3
Avian:H5N3
Avian:H5N1
Avian:H5N6
Avian:H5N2
Avian:H5N1
Human:H1N1
Human:H1N1
Human:H1N1
Avian:H7
Avian:H7
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Human:H5N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Avian:H1N1
Avian:H1N1
Avian:H1N1
Avian:H1N1
Avian:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Swine:H1N1
Avian:H7N3
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N2
Avian:H7N3
Avian:H7N3
Avian:H7N3
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Avian:H7N1
Avian:H5N1
Avian:H2N2
Avian:H2N2
Avian:H2N3
Avian:H2N2
Avian:H2N9
Avian:H2N3
Avian:H2N3
Avian:H2N3
Avian:H2N3
Avian:H2N8
Avian:H2N1
Avian:H2N1
Avian:H2N1
Avian:H2N1
Avian:H2N1
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Swine:H3N2
Swine:H3N2
Swine:H3N2
Swine:H3N2
Avian:H5N1
Human:H5N1
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H5N2
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N1
Avian:H5N2
Avian:H5N2
Avian:H6N2
Human:H1N1
Human:H1N1
Human:H1N1
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Avian:H9N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Human:H3N2
Avian:H5N1

Liebe Grüße

Tilli
 
Naja, es ist genauso wie du schon geschrieben hast, du nimmt eine HashMap mit String als Key und einem HashSet als Value (dann hast du keinen gleichen Einträge mehrfach drin).

Ansonsten einfach in einer Schleife die Werte in die Map schreiben, wo genau liegt das Problem?
 
Hmm, ehrlich gesagt versthe ich nicht wie ich dann die Keys zu den Maps zuordnen kann:

Meine funktion für das einlesen der textdatei sieht so aus:

Java:
 public static void getTextContent(String path) {
       
        try {
            inFile = new BufferedReader(
                    new FileReader(path));

            String line;
            line = inFile.readLine();
            while ((line = inFile.readLine()) != null) {
                String[] values = line.split("\t");
                String host = values[2]; //Hosts
                String virus = values[4];
                //Write Hashset for Hosts.
                System.out.println(host+":"+virus);
                Hash1.add(host);
            }
            inFile.close();
        } catch (IOException e) {
            JOptionPane.showMessageDialog(null,
                    "File Error: " + e.toString());
        }
    }
 
Du musst nichts zuordnen, dass machst doch die Map schon selbst.

Du überprüfst ob zu einem Key schon ein Set existiert. Wenn nicht, dann erzeugst du einen und fügst dem den Wert hinzu, wenn es schon ein Set existiert brauchst du dem einfach nur den Wert hinzuzufügen.
 
Hmm, irgendwie funktioniert es immer noch nicht. Könntest du mir das villeicht mal mit ein paar codeschnippseln näher beschreiben? Ich bin jetzt soweit das ich eine HashMap habe die keys und jeweils ein Hashset per key enthält. Aber leider stehen jetzt in jedem Hashset alle werte 🙂

Grüße

Tilli
 
Java:
Map<String, Set<String>> map = ...

for (...)
{
    String key = ...
    String value = ...


    Set<String> set = map.get(key);
    if (set == null)
    {
        set = new HashSet<String>();
        map.put(key, set);
    }
    set.add(value);
}
 

Zurück
Oben