根據屬性對物件清單進行排序
您有一個自訂Java 類別ActiveAlarm,其中包含與警報相關的屬性,包括timeStarted和timeEnded。您需要將 List
解決方案:使用比較器
在 Java 中,您可以使用比較器對物件進行排序。比較器是一個接口,表示比較兩個物件的函數。您可以建立自訂比較器來根據指定條件比較 ActiveAlarm 物件。
以下是使用比較器的範例實作:
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); } } }
此比較器首先比較警報的 timeStarted 值,如果它們相等,則會比較 timeEnded 值。比較結果(1、0 或 -1)用於確定排序順序。
注意:對於 Java 8 及更高版本,您可以使用 lambda 表達式來簡化比較器的實作:
Collections.sort(alarms, (a1, a2) -> Long.compare(a1.timeStarted, a2.timeStarted) != 0 ? Long.compare(a1.timeStarted, a2.timeStarted) : Long.compare(a1.timeEnded, a2.timeEnded));
以上是如何根據多個屬性對 Java 物件清單進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!