Sortieren einer Liste von Objekten nach mehreren Eigenschaften in Java
In Java erfordert das Sortieren einer Liste von Objekten nach Eigenschaften die Verwendung von Komparatoren. Betrachten Sie das folgende Beispiel:
public class ActiveAlarm { public long timeStarted; public long timeEnded; // ... other fields }
Um eine Liste von ActiveAlarm-Objekten sowohl nach timeStarted als auch nach timeEnded in aufsteigender Reihenfolge zu sortieren, können Sie einen verschachtelten Komparator verwenden:
List<ActiveAlarm> alarms = ...; Comparator<ActiveAlarm> comparator = Comparator.comparing(alarm -> alarm.timeStarted) .thenComparing(alarm -> alarm.timeEnded); Collections.sort(alarms, comparator);
Using Java 8 Lambda-Ausdrücke
Mit Java 8 wurden Lambda-Ausdrücke eingeführt, die eine prägnante Möglichkeit zur Darstellung von Komparatoren bieten:
Comparator<ActiveAlarm> comparator = (alarm1, alarm2) -> { int result = Long.compare(alarm1.timeStarted, alarm2.timeStarted); if (result == 0) { result = Long.compare(alarm1.timeEnded, alarm2.timeEnded); } return result; };
Alternative Sortiermethode
Alternativ können Sie eine benutzerdefinierte Komparator-Implementierung verwenden, die direkt auf die Eigenschaften zugreift:
Comparator<ActiveAlarm> comparator = new Comparator<ActiveAlarm>() { @Override public int compare(ActiveAlarm o1, ActiveAlarm o2) { int result = Long.compare(o1.timeStarted, o2.timeStarted); if (result == 0) { result = Long.compare(o1.timeEnded, o2.timeEnded); } return result; } };
Durch die Verwendung von Komparatoren können Sie eine Liste von Objekten einfach nach einer beliebigen Kombination von Eigenschaften und in beliebiger Reihenfolge sortieren.
Das obige ist der detaillierte Inhalt vonWie sortiere ich eine Liste von Objekten nach mehreren Eigenschaften in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!