首頁 > Java > java教程 > 如何使用比較器以多個時間戳記對 Java 物件清單進行排序?

如何使用比較器以多個時間戳記對 Java 物件清單進行排序?

Mary-Kate Olsen
發布: 2024-11-20 14:40:12
原創
329 人瀏覽過

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

使用比較器按時間戳對清單中的物件進行排序

在Java 中,根據多個屬性對物件清單進行排序需要使用比較器。當您有一個具有與時間相關的屬性(例如 ActiveAlarm)的類別時,您可以使用比較器以特定順序對它們進行排序。

要對清單進行排序按 timeStarted 升序,然後按 timeEnded 升序,您可以建立一個實現 Comparator 介面的自訂比較器。以下是範例:

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);
登入後複製

在此比較器中,compare 方法先比較 timeStarted 值並傳回一個整數,指示 o1 是早於(0)o2。如果 timeStarted 值相等,則會比較 timeEnded 值。

使用Java 8 及更高版本,您可以使用lambda 表達式來簡化比較器:

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;
};
登入後複製

透過使用比較器,您可以根據特定屬性對物件清單進行有效排序,為Java 中組織和操作資料提供靈活的方法。

以上是如何使用比較器以多個時間戳記對 Java 物件清單進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板