Auf Thema antworten

[USER=58041]@mihe7[/USER] Besten Dank, habs jetzt auf JavaFX mit TableView umgeschrieben.


Was ich aber nicht hinkriege ist, der Key einer HashMap zu verändern, ohne dass sich die Reihenfolge in der Tabelle verändert.

Ist das gar nicht möglich bei einer HashMap?

Also ich möchte den alten Key eines bestehenden key/value - paar mit einem neuen Key ersetzen.


Habe es mal so versucht zu lösen. Wenn eine Zelle editiert wird, wird einfach mal der alte Wert zwischengespeichert:


[CODE lang="java" title="onEditStart"]public void onEditStart(CellEditEvent edittedCell) throws Exception {

        oldCustomer =  table.getSelectionModel().getSelectedItem();

        System.out.println("oldValue: " + oldCustomer);


    }[/CODE]



Bei onEditCommit, wird der neue Wert ausgelesen und eben jetzt sollte der Key überschrieben werden:


[CODE lang="java" title="onEditCommit"]public void onEditCommit(CellEditEvent edittedCell) throws Exception {

        newCustomer = edittedCell.getNewValue().toString();

        System.out.println("newValue: " + newCustomer);

        if (!newCustomer.equals(oldCustomer)) {

            String obj = map.remove(oldCustomer);

            System.out.println("KEY: " + oldCustomer);

            System.out.println("OBJ: " + obj);

            map.put(newCustomer, obj);

        }

        writeHashMapToCsv(map);

    }[/CODE]


Leider schiebt es dann das ganze Key/Value - Paar ans Ende der Tabelle, was gar nicht schön ist...


Kann ich das mit der HashMap irgendwie lösen? Oder ist das eine "eigenheit der Hashmap"?


Ich dachte einfach, es ist einfacher, anhand des Key's danach die Mail auszulesen, da ich in meinem weiteren Programm - Ablauf den Key - Wert weiss.


Oder sollte ich es trotzdem besser mit einem Objekt machen und dort irgendwie eine Suchfunktion einbauen?



Oben