使用比較器按時間戳對清單中的物件進行排序
在Java 中,根據多個屬性對物件清單進行排序需要使用比較器。當您有一個具有與時間相關的屬性(例如 ActiveAlarm)的類別時,您可以使用比較器以特定順序對它們進行排序。
要對清單進行排序
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中文網其他相關文章!