Heim  >  Artikel  >  Java  >  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
Mary-Kate OlsenOriginal
2024-11-20 14:40:12254Durchsuche

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);

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;
};

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!

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