Sortierung eines TreeSets kann zerstört werden??

Status
Nicht offen für weitere Antworten.

Novanic

Bekanntes Mitglied
Hi Leute,

ich hab ein Problem mit der Sortierung von TreeSet.

Ich füge Objekte in ein TreeSet ein, die anhand der Variable "Text" vom Typ String sortiert werden sollen (also "theObject.getText()"). Bei der Erzeugung des TreeSets gebe ich den Comparator für "getText" mit.

Beim Einfügen der Objekte (mit "theTreeSet.add()") ist auch alles schön sortiert. Wenn sich jetzt aber der String "Text" ändert, bleibt das Objekt gnadenlos an der gleichen Position und mein TreeSet ist nicht mehr sortiert.

Wenn ich jetzt also meine Objekte mit dem Iterator abfrage, kommen sie unsortiert zurück.

Ist das so richtig? Und was kann man dagegen tun?
Es gibt ja nichtmal eine Methode mit der man die Sortierung manuell wieder anstoßen könnte oder (wäre aber auch eher unpraktikabel)?

Ich könnte TreeSet auch durch eine andere Collection austauschen, aber nicht durch eine Map, da das Sortierattribut auch doppelt vorkommen könnte...

Habt ihr eine Idee? 🙂

Vielen Dank im Voraus!

Gruß Nova
 
Weiß den keiner warum das so ist/was ich dagegen mache kann??

Danke. 🙂

Gruß Nova
 
Das ist eine bekannte Problematik. Die API Doc dazu:

Note: Great care must be exercised if mutable objects are used as set elements. The behavior of a set is not specified if the value of an object is changed in a manner that affects equals comparisons while the object is an element in the set.


Du musst wohl erst das Element aus dem Set entfernen, dann verändern und dann wieder einfügen.
 
Ach du schande. Dann muss ich mich wohl doch nach einer Alternative umsehen. :-(

Mit der TreeMap funktioniert es alles wunderbar. Aber da hab ich eben wieder das Problem mit den doppelten Keys und das ich eigentlich überhaupt keine Keys benötige...

Aber danke für die Antwort und den Tipp. 🙂

Gruß Nova
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben