Comparator oder TreeMap?

WeirdAl

Bekanntes Mitglied
Hallo zusammen,
ich hätte mal eine Frage welches vorgehen "besser" ist.

Angenommen man hat eine Liste mit Objekten die nach einem String(zb einer ID) zu sortieren ist, wäre es ok eine TreeMap zu benutzen und dann anhand TreeMap.values diese als sortierte Liste zurück zu geben?

Oder ist dies eher "bad practice" und man sollte eine Liste erzeugen und mit Hilfe eines Comparators sortieren
 

nrg

Top Contributor
das ist imho anwendigsabhängig. wenn du öfters elemente einfügst und entfernst, würde ich eine TreeMap nehmen. Wenn du genau einmal eine Collection erzeugst und diese dann sortiert ausgeben willst, würde ich einen Comparator nehmen.
 

Landei

Top Contributor
Die Keys sind die zu sortierenden Werte, also ist eher die Frage: Was sind die Values? Antwort: Ist völlig egal. Deshalb kann man anstelle der TreeMap auch ein TreeSet verwenden.
 

nrg

Top Contributor
hast dich vermutlich vertippt, weil ich wüsste jetzt nicht, was das mit duplikate erlauben ja/nein zu tun haben soll (oder ich steh auf'm schlauf)
 

WeirdAl

Bekanntes Mitglied
Danke für die Antworten :)
Ich werde dann doch lieber Comparatoren nehmen und meine Liste neu sortieren. Damit bin ich dann auch flexibler was die Sortierung angeht.

-> Erledigt
 

Landei

Top Contributor
verstehe nicht ganz, was das damit zu tun hat :oops:

Drücke ich mich so undeutzrijzhnfrhjthrt?

Es ging darum, ob man eine Menge Werte mit mit einer TreeMap sortieren sollte. Das kann man tun:

Java:
public SortedMap<Foo,Void> map = new TreeMap<Foo,Void>(new FooComparator());
map.put(foo1, null);
map.put(foo2, null);
map.put(foo3, null);
//map.keySet() ist immer sortiert

Aber dann kann man auch ein TreeSet verwenden, weil man ja dafür keine Values benötigt, nur die "Keys" (ein TreeSet wird übrigens intern über eine TreeMap realisiert, deren Values ignoriert werden):

Java:
public SortedSet<Foo> set = new TreeSet<Foo>(new FooComparator());
set.add(foo1);
set.add(foo2);
set.add(foo3);
//set ist immer sortiert
 

nrg

Top Contributor
Habe bei TreeMap gleich an Duplikate erlauben gedacht. Das tut sie in Bezug auf die Values ja auch. Nur wenn man es für die Sortierung verwenden erlauben die Keys natürlich keine Duplikate.

> (oder ich steh auf'm schlauf)
so wars dann wohl auf letztendlich ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T TreeMap durch Comparator mit Generics sortieren Allgemeine Java-Themen 9
T Comparator Allgemeine Java-Themen 3
T komplizierter Comparator (IllegalArgumentException) Allgemeine Java-Themen 3
D Comparator Allgemeine Java-Themen 7
S TreeSet - Comparator ändern -> resort? Allgemeine Java-Themen 8
R Eigener Comparator Allgemeine Java-Themen 2
J Comparator bei Gleichheit zweites Kriterium mitgeben Allgemeine Java-Themen 4
J TreeSet und Comparator will nicht so wie ich Allgemeine Java-Themen 2
R Eigenen Comparator schreiben ? Allgemeine Java-Themen 10
V Comparator (steh wohl aufm Schlauch) Allgemeine Java-Themen 12
B Sortierung einer ArrayList mit Comparator Allgemeine Java-Themen 6
Z Probleme mit Comparator für binarySearch Allgemeine Java-Themen 2
S Performance von Comparator Allgemeine Java-Themen 3
N Object-Array mit Comparator absteigend sortieren? Allgemeine Java-Themen 10
S Comparator verwenden? Allgemeine Java-Themen 2
Neumi5694 Datentypen ArrayList vs TreeMap Allgemeine Java-Themen 6
G treeMap.putall funktioniert nicht?! Allgemeine Java-Themen 2
B Collections TreeSet/TreeMap, doppelte Einträge zulassen ? Allgemeine Java-Themen 11
G mittleres Element aus TreeMap Allgemeine Java-Themen 5
G Datentypen TreeMap nach Color sortiert (kd-Baum) Allgemeine Java-Themen 8
J Vorsortieren für TreeMap Allgemeine Java-Themen 7
C Reihenfolge einer SortedMap/TreeMap umkehren Allgemeine Java-Themen 3
D Probleme beim schreiben / lesen in TreeMap Allgemeine Java-Themen 9
B TreeMap Index !!! Allgemeine Java-Themen 6
J Eindeutige ID für Objekte als Keys in TreeMap Allgemeine Java-Themen 12
P Große Datenmenge wie speichern (HashMap? TreeMap?) Allgemeine Java-Themen 11
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
T [TreeMap] Corresponding value to a key Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben