Sortieren legen Sie in java mit Komparator
Ich versuche zu Sortieren, legen Sie mit Comparator
wie unten gezeigt.
Set seatSet = tc.getTheatreSeat();
List listArr = new ArrayList(seatSet);
Collections.sort(listArr, new Comparator() {
public int compare(Object arg0, Object arg1) {
TheatreSeat r1 = (TheatreSeat) arg0;
TheatreSeat r2 = (TheatreSeat) arg1;
if (r2.getId() < r1.getId()) {
return 1;
}
return 0;
}
});
Aber es funktioniert nicht. was ist Los mit meinem code bitte helfen.
- 1) Einrücken von code. 2) "es funktioniert nicht" ist keine gute Beschreibung. 3) Wir wissen nicht, welche Art von set Sie verwenden - die meisten nicht erlauben die explizite Bestellung. 4) Bitte legen Sie eine kurze, aber vollständige Programm demonstriert das problem.
- In welcher Weise ist es nicht? Ich sehe, Sie haben kopiert den Inhalt der
Set
in eineList
und versuchen zu Sortieren, dieList
, also, warum Sie rufen Sie Ihre postSort set
? - set enthält Objekte der Klasse TheatreSeat , die Wert-id rownumber etc. ich will diese Art mit der id. Wie kann ich das> sorry, für meinen schlechten Versuch der Entsendung Frage bin neu hier
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Rückgabewert für eine compare-Funktion zu -1, 0 oder +1, nicht nur 1 oder 0.
anstelle der if-Anweisung sollte die Arbeit tun.
Java 8 Sortieren mit einem lambda wäre
Sieht es richtig genug, dass es funktionieren sollte meist.
Für das Verständnis der int return Wert von einem Komparator definiert 3 Ergebnisse:
Durch inversing positiv zu negativ und Umgekehrt können Sie festlegen, aufsteigender und absteigender Reihenfolge.
Also hier eine vollständige version Ihres Komparator (ich die IDs in der Variablen zu machen, mehr einfach zu Lesen):
So, warum Schreibe ich id1 - id2 ? Denn es resultiert in genau das, was wir wollen. Wenn id2 größer ist dann id1 wird das Ergebnis kleiner null und Umgekehrt und wenn id1 und id2 entspricht das Ergebnis gleich null sein wird 😉
Verwenden Sie eine Schritt-debugger untersuchen Sie Ihre Liste vor dem Sortieren und nach das Ergebnis überprüfen.