Heim > Java > javaLernprogramm > Wie sortiere ich eine Liste von Java-Objekten basierend auf mehreren Eigenschaften?

Wie sortiere ich eine Liste von Java-Objekten basierend auf mehreren Eigenschaften?

Mary-Kate Olsen
Freigeben: 2024-12-02 03:34:08
Original
202 Leute haben es durchsucht

How to Sort a List of Java Objects Based on Multiple Properties?

Liste der Objekte nach Eigenschaft sortieren

Sie haben eine benutzerdefinierte Java-Klasse ActiveAlarm, die Eigenschaften enthält, die sich auf Alarme beziehen, einschließlich timeStarted und timeEnded. Sie müssen eine Liste sortieren. in aufsteigender Reihenfolge nach timeStarted und dann nach timeEnded.

Lösung: Verwenden des Komparators

In Java können Sie Objekte mithilfe eines Komparators sortieren. Ein Komparator ist eine Schnittstelle, die eine Funktion zum Vergleichen zweier Objekte darstellt. Sie können einen benutzerdefinierten Komparator erstellen, um ActiveAlarm-Objekte basierend auf den angegebenen Kriterien zu vergleichen.

Hier ist eine Beispielimplementierung mit einem Komparator:

import java.util.Collections;
import java.util.Comparator;

class ActiveAlarm {
    public long timeStarted;
    public long timeEnded;
    // Other properties and accessor methods...
}

public class SortingAlarms {

    public static void main(String[] args) {
        List<ActiveAlarm> alarms = new ArrayList<>();
        
        // Add alarms to the list
        
        // Create a comparator to sort by timeStarted and then timeEnded
        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;
            }
        };

        Collections.sort(alarms, comparator);
        
        // Print the sorted list
        for (ActiveAlarm alarm : alarms) {
            System.out.println(alarm.timeStarted + " - " + alarm.timeEnded);
        }
    }
}
Nach dem Login kopieren

Dieser Komparator vergleicht zuerst die timeStarted-Werte der Alarme. und wenn diese gleich sind, werden die timeEnded-Werte verglichen. Das Ergebnis des Vergleichs (1, 0 oder -1) wird verwendet, um die Sortierreihenfolge zu bestimmen.

Hinweis: Für Java 8 und höher können Sie Lambda-Ausdrücke verwenden, um die zu vereinfachen Implementierung des Komparators:

Collections.sort(alarms, (a1, a2) -> Long.compare(a1.timeStarted, a2.timeStarted) != 0 ? Long.compare(a1.timeStarted, a2.timeStarted) : Long.compare(a1.timeEnded, a2.timeEnded));
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie sortiere ich eine Liste von Java-Objekten basierend auf mehreren Eigenschaften?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage