Heim > Java > javaLernprogramm > Wie kann ich mithilfe von Komparatoren eine Liste von Java-Objekten nach mehreren Zeitstempeln sortieren?

Wie kann ich mithilfe von Komparatoren eine Liste von Java-Objekten nach mehreren Zeitstempeln sortieren?

Mary-Kate Olsen
Freigeben: 2024-11-20 14:40:12
Original
329 Leute haben es durchsucht

How can I sort a list of Java objects by multiple timestamps using Comparators?

Sortieren von Objekten in einer Liste nach Zeitstempeln mithilfe von Komparatoren

In Java erfordert das Sortieren einer Liste von Objekten basierend auf mehreren Eigenschaften die Verwendung von Komparatoren. Wenn Sie eine Klasse mit zeitbezogenen Attributen wie ActiveAlarm haben, können Sie Komparatoren verwenden, um diese in einer bestimmten Reihenfolge zu sortieren.

Um eine Liste zu sortieren In aufsteigender Reihenfolge nach timeStarted und dann nach timeEnded können Sie einen benutzerdefinierten Komparator erstellen, der die Comparator-Schnittstelle implementiert. Hier ist ein Beispiel:

List<ActiveAlarm> alarms = new ArrayList<>();

// Custom comparator to compare ActiveAlarm instances based on timeStarted and timeEnded
Comparator<ActiveAlarm> comparator = new Comparator<ActiveAlarm>() {
    @Override
    public int compare(ActiveAlarm o1, ActiveAlarm o2) {
        // First compare timeStarted
        int comparisonResult = Long.compare(o1.timeStarted, o2.timeStarted);
        // If timeStarted is equal, compare timeEnded
        if (comparisonResult == 0) {
            comparisonResult = Long.compare(o1.timeEnded, o2.timeEnded);
        }
        return comparisonResult;
    }
};

// Sort the list of alarms using the comparator
Collections.sort(alarms, comparator);
Nach dem Login kopieren

In diesem Komparator vergleicht die Vergleichsmethode zunächst die timeStarted-Werte und gibt eine Ganzzahl zurück, die angibt, ob o1 früher (<0) oder später (>0) als o2 ist. Wenn die timeStarted-Werte gleich sind, werden dann die timeEnded-Werte verglichen.

Mit Java 8 und höher können Sie Lambda-Ausdrücke verwenden, um den Komparator zu vereinfachen:

Comparator<ActiveAlarm> comparator = (o1, o2) -> {
    int comparisonResult = Long.compare(o1.timeStarted, o2.timeStarted);
    if (comparisonResult == 0) {
        comparisonResult = Long.compare(o1.timeEnded, o2.timeEnded);
    }
    return comparisonResult;
};
Nach dem Login kopieren

Durch die Verwendung von Komparatoren können Sie kann Listen von Objekten basierend auf bestimmten Eigenschaften effizient sortieren und bietet so einen flexiblen Ansatz zum Organisieren und Bearbeiten von Daten in Java.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Komparatoren eine Liste von Java-Objekten nach mehreren Zeitstempeln sortieren?. 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