プロパティに基づいたオブジェクトのリストの並べ替え
timeStarted や timeEnded など、アラームに関連するプロパティを含むカスタム Java クラス ActiveAlarm があります。リスト
解決策: Comparator の使用
Java では、Comparator を使用してオブジェクトを並べ替えることができます。コンパレーターは、2 つのオブジェクトを比較する関数を表すインターフェイスです。カスタム コンパレータを作成して、指定した条件に基づいて 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 以降では、ラムダ式を使用して並べ替え順序を簡素化できます。コンパレータの実装:
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 中国語 Web サイトの他の関連記事を参照してください。