HashMap key verändert

haraldSol

Grünschnabel
Servus zusammen,
ich hab da mal eine Frage zu Java's HashMap...
Erst mal der code

Code:
HashMap hmR <String,Vector> = new HashMap <String,Vector>();
//dann werden mit hmR.put(str, v); daten in die Map geschrieben

//zum ende soll die Map wieder ausgelesen werden (Iteration)

So schön so gut. Allerdings sind die keys bei der Ausgabe jetzt nicht in der Reihnfolge, wie sie hineigeladen wurden!
Wo dran kann das liegen, kann mir das wer sagen...

Vielen Dank
 
Dazu musst du verstehen wie eine HashMap funktioniert. Eine HashMap ordnet jedem Key eine Zahl, einen so genannten Hash. Über diesen kann die HashMap in konstanter Laufzeit, also egal wie viele Elemente enthalten sind gleich schnell, die Elemente wiederfinden. Allerdings geht dabei natürlich die Ordnung verloren.

Für deine Zwecke ist allerdings fraglich ob eine Map das richtige ist. Was soll denn zwischen Zeile 2 und 4 passieren? Also zwischen einfügen und ausgeben? dann fällt es uns hier bestimmt leichter dir bei der Wahl der richtigen Datenstruktur zu helfen.
 
In der besagten HashMap sollen die Daten in der Reihnfolge drin stehen, wie sie abgespeichert wurde, also die Reihnfolge darf nicht verändert werden. Gibt es eine 2dimensionale ArrayList?
 
Ja, das hast du oben schon geschrieben. Aber soll zwischen dem Einfügen und dem wieder ausgeben irgendetwas geschehen? Soll dort auf die Daten Zugegriffen werden?

Du könntest wenn es denn unbedingt mit einer HashMap sein soll dir parallel dazu auch eine Queue oder eine ArrayList mit Strings anglegen und dann über diese geordnete Liste von Strings auf die HashMap zugreifen.

Aber das beste wäre es wenn du uns sagen würdest was das gesamte Programm machen soll, und vor allem was zwischen Einfügen und Ausgeben der Daten mit der HashMap passieren soll.
 
Die Daten sollen für eine zeitliche Ablaufsteuerung verwendet werden. Sprich Key sollte der Zeitpunkt sein und Value ein dazu entsprechender Datenstring.
Zeile 3 setzt Programm vorbereitung, also für die Collection uninteresant. In Zeile 4 soll dann das Diagramm generiert werden. Jedoch müssen nach dem generieren der Ansicht die Daten weiterhin in der Collection verfügbar sein.

Gruß
 
Spikes Tipp mit der LinkedHashMap ist gut. Aber wieso hast du in deinem Beispiel oben einen String als Key und einen Vector als Value? Wenn du von Zeitpunkt auf Daten mappen willst würde ich dir als Key einen long der den zeitpunkt beinhaltet empfehlen, oder Date, wobei das ca. auf das selbe hinausläuft.
 

Neue Beiträge

Zurück