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
 
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.
 
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.
 
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)
 
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
 
verstehe nicht ganz, was das damit zu tun hat 😳

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
 
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 😉
 

Zurück
Oben