Hallo,
gibt es die Möglichkeit, den JTree zu sortieren. Ich lese momentan aus einem Array aus und trage Überschriften in den Tree ein, allerdings kommen die Daten unsortiert. Den Array vorher sortieren wäre sehr aufwendig. Gibt es eine andere Möglichkeit?
gruss
Christian
Hallo,
wieso sortierst du nicht einfach das Array? Ich glaube kaum, das es eine einfachere Lösung gäbe.
Einfach mit Arrays.sort(Array, Comparator). Den Komparator mußt du eben für deine Objekte selbst schreiben. (siehe SDK-Doku)
Gruß
Jochen
Hallo Jochen,
danke fuer deine Antwort. Die Loesung mit dem Comperator gefaellt mir prinzipiell schon, aber:
Der Grund, warum ich den Array lieber nicht sortieren wollte, ist, weil ich das Array danach in der vorgegebenen Reihenfolge benoetige - sortiert brauche ich es nur fuer den Tree. Sicher koennte ich das Array vorher umkopieren, aber es handelt sich um relativ grosse Datensätze.
Gruss
Christian
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Irgendwie musst du es ja sortieren und wenn es eine automatische Möglichkeit gäbe würde der das auch tun.
Am besten wär es natürlich, wenn du eine Collection hast statt einem Array (ArrayList dürfte für dich die richtige sein) und dann machst du per clone() eine „shallow copy“, also dass eben nur die Referenzen kopiert werden. Die geklonte Version kannste dann ja sortieren ohne die Objekte wo auch immer die liegen umzusortieren.
Grüße
Bruno
Hi,
danke, werde mich mal „tiefer“ in diese Richtung graben. Meld mich dann falls ich Probleme habe. Noch eine allgemeine Frage:
Sind Collections performanter als Arrays, z.B. auch wenn es sich um int[] oder string[] handelt?
Danke
Christian
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Sind Collections performanter als Arrays, z.B. auch wenn es
sich um int[] oder string[] handelt?
Nein, eher langsamer… sofern dein Array sich aber verändern soll in der Größe und nicht immer die gleichen Werte enthält, solltest du keins verwenden. int[] kannst du nicht ohne weiteres in eine Collection packen, da int ein primitiver Datentyp ist und Collections nur mit Objekten arbeiten müsstest du die Werte in die Klasse java.lang.Integer kapseln.
Zu java.util.Collections.sort(List) gibt es übrigens folgenden javadoc Kommentar:
This implementation dumps the specified list into an array, sorts the array, and iterates over the list resetting each element from the corresponding position in the array. This avoids the n2 log(n) performance that would result from attempting to sort a linked list in place.
Wird also wohl auch nicht gerade der Performancehit sein, evtl. müsstest du ne eigene Sortierroutine schreiben um das zu umgehen, aber ob das obige Verhalten nicht doch schnell genug ist, keine Ahnung. Was hast du denn vor zu sortieren… sortieren geht eigentlich meistens viel schneller als man so denkt.
Grüße
Bruno