Wie Daten speichern? Hashtable/Hashmap taugt nicht

genfrosch

Grünschnabel
Hallo,

sorry erstmal für den etwas seltsamen Titel dieses Beitrags, aber ich weiss nicht, wie ich die Frage besser zusammenfassen soll.

Zu meinem Problem:
ich habe 2 Dateien in denen hexadezimale Werte stehen, und ich möchte diese Dateien vergleichen, also herausfinden, ob alle Werte der einen Datei in der anderen enthalten sind.
Zusätzlich enthält die 2. Datei noch 2-dimensionale Koordinaten, denen die jeweiligen Werte zugeordnet sind.
Das heisst also in Datei 1 stehen nur Hex-Werte und in Datei 2 Koordinaten und zugehörige Hexwerte.

Die Koordinaten sind eindeutig, die Hex-Werte nicht. (Wenn ein Werte mehrfach vorkommt, dann muss er auch mehrfach gefunden werden, in welcher Reihenfolge ist in meinem Fall egal)

Die Werte der Datei 1 stellen kein Problem da, diese habe ich in einem Array, allerdings ist es mir bisher nicht gelungen die Werte der 2. Datei so abzuspeichern bzw. im Speicher abzulegen, dass ich die Koordinaten zurückgeliefert bekomme, wenn ich einen Wert gefunden habe.

Ich habe es beispielsweise mit einer Hashtable probiert; die Koordinaten muss ich als Key nehmen, da die Hex-Werte ja nicht eindeutig sind, der Key in einer Hashtable aber eindeutig sein muss. Ich kann auf diese Weise zwar mittels containsValue() herausfinden, ob dieser Wert enthalten ist, aber ich habe keine Möglichkeit über den Value an den Key heranzukommen (oder etwas doch).

Ich könnte mir natürlich eigene Datentypen erstellen und die in der Hashtable ablegen, aber dann müsste ich jedes Element durchsuchen und das wäre bei mehreren 1000 Einträgen sehr ineffizient, und leider können in meinem Programm die Einträge auch leicht in die 10000de gehen.


Hat jemand also eine Idee, wie ich den Abgleich effizient gestalten kann, bzw. wie es mir überhaupt möglich ist über den Value an den Key zu kommen.
Gibt es eventuell noch etwas ähnliches wie Hashtables, wo man über Value oder Key suchen kann?

Ich bin für jeden Tipp dankbar.

-Grüße,
genfrosch
 
Zurück