Heim  >  Artikel  >  Java  >  Wie sortiere ich eine Liste von Objekten nach mehreren Eigenschaften in Java?

Wie sortiere ich eine Liste von Objekten nach mehreren Eigenschaften in Java?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-20 16:23:13306Durchsuche

How to Sort a List of Objects by Multiple Properties in Java?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn