Hallo,
in meiner Klasse benutze ich einen TreeSet, der nach einem bestimmten Comparator sortiert.
Nehmen wir zur Vereinfach einmal folgendes Beispiel:
Bis hierher ist alles schön und gut.
Wenn ich meine Klasse Test habe und dann dem TreeSet immer wieder ein neues TreeSetElement "draufhaue", sortiert er das Element richtig ein!
Das Problem tritt nur auf, wenn ich nun ein bereits im TreeSet vorhandenes TreeSetElement mit changeDate() ändere: Anstatt dieses Element neu einzusortieren, bleibt es an der selben Stelle :-(((!!
Das kann aber nicht sein, es muss (wenn changeDate wirklich wie oben implementiert ist), an das Ende des TreeSets rutschen!
Gibt es irgendwie ne Möglichkeit, dem TreeSet zu sagen, er solle sich neu sortieren, ohne, dass ich das geänderte Element zunächst aus dem TreeSet lösche und dann wieder einfüge?
Vielen Dank für Eure Hilfe
gpxricky
in meiner Klasse benutze ich einen TreeSet, der nach einem bestimmten Comparator sortiert.
Nehmen wir zur Vereinfach einmal folgendes Beispiel:
Code:
class Test {
public TreeSet trees = new TreeSet();
...
}
class TreeSetElement implements Comparable {
private GregorianCalendar date = null;
public TreeSetElement() {
date = new GregorianCalendar();
}
public changeDate() {
date = new GregorianCalendar(2005, 12, 12, 12, 12, 12);
}
public int compareTo(Object o) {
// Sortiert korrekt nach TreeSetElement.date
}
}
Bis hierher ist alles schön und gut.
Wenn ich meine Klasse Test habe und dann dem TreeSet immer wieder ein neues TreeSetElement "draufhaue", sortiert er das Element richtig ein!
Das Problem tritt nur auf, wenn ich nun ein bereits im TreeSet vorhandenes TreeSetElement mit changeDate() ändere: Anstatt dieses Element neu einzusortieren, bleibt es an der selben Stelle :-(((!!
Das kann aber nicht sein, es muss (wenn changeDate wirklich wie oben implementiert ist), an das Ende des TreeSets rutschen!
Gibt es irgendwie ne Möglichkeit, dem TreeSet zu sagen, er solle sich neu sortieren, ohne, dass ich das geänderte Element zunächst aus dem TreeSet lösche und dann wieder einfüge?
Vielen Dank für Eure Hilfe
gpxricky