Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich habe ein TreeSet mit Objekten, die ich gerne sortieren möchte. Jedes Objekt hat als Attribute under anderen die X und Y Koordinate. Ich will jetzt die möglichkeit habenl entwieder die Objekte nach der X Koordinate Sortieren und nach Y.
Ich habe schon gegoogelt und das Forum durchgesucht und bin drauf gekommen, das meine Objekte die Interface Comparable implementieren sollen und dass ich die Methode compareTo überschreiben muss.
Wenn ich die Methode so überschreibe, dass ich die Objekte nach X vergleiche, dann ich nicht mehr nach Y vergleichen. Wie kann ich die Methode so überschreiben, dass ich sowohl die Objekte nach der Koordinate X als auch nach der Koordinate Y vergleichen kann?
Wenn ich die Methode so überschreibe, dass ich die Objekte nach X vergleiche, dann ich nicht mehr nach Y vergleichen. Wie kann ich die Methode so überschreiben, dass ich sowohl die Objekte nach der Koordinate X als auch nach der Koordinate Y vergleichen kann?
Gar nicht. Comparable sollte man nur dann verwenden, wenn es wirklich nur DIE kanonische Ordnung gibt, die sich praktisch niemals Ändert. Bei deinem Problem ist es nicht der Fall, denn du willst es ja andauernd nach verschiedenen Kriterien sortieren. Dazu musst man halt viele verschiedene
Danke für deine Hilfe.
Die Objekte, die ich vergleichen möchte, sind eigentlich in einem HashSet aber da man HashSets nicht sortieren kann, erzeuge ich daraus ein TreeSet :
Code:
TreeSet<A> elementeInTree = new TreeSet<A>(elementeInHash)
Wenn ich schon mal die eigene Comparatoren schreibe, wie kann ich dann die Comparator meinem elemteInTree übergeben ? Ich habe nur einen Kostruktor gesehen, wo ich in dem Fall statt elemeteInHash, die Comparator Klasse übergebe. Das hilft mir Naturlich nicht.
Wieso nicht? Erstelle die passende TreeMap mit dem geeigneten comparator und rufe anschließend sowas wie addAll mit der alten HashMap auf. (Ich denke mal, inzwischen ist es eh gelöst...)
Danke für deine Hilfe.
Die Objekte, die ich vergleichen möchte, sind eigentlich in einem HashSet aber da man HashSets nicht sortieren kann, erzeuge ich daraus ein TreeSet :
Code:
TreeSet<A> elementeInTree = new TreeSet<A>(elementeInHash)
Wenn ich schon mal die eigene Comparatoren schreibe, wie kann ich dann die Comparator meinem elemteInTree übergeben ? Ich habe nur einen Kostruktor gesehen, wo ich in dem Fall statt elemeteInHash, die Comparator Klasse übergebe. Das hilft mir Naturlich nicht.
Danke für eure Hilfe, ich habe es, wie 0x7F800000 geschrieben hat, gelöst. Der Nachteil ist nur, dass ich ein Set erzeuge, der dann nicht benutzt wird und platz nimmt, bis der GC ihn dann löscht, oder denke ich falsch ?
Wenn etwas nicht mehr benutzt wird, löscht es der GC, es sei denn man baut absichtlich memory leaks ein (das geht aber nicht so einfach, weil man für einen Memory Leak meistens "auffällig komplizierte" Strukturen benötigt). Um sowas in Java hinzubekommen, muss man sich schon anstrengen.