ホームページ > Java > &#&チュートリアル > 複数のプロパティに基づいて Java オブジェクトのリストを並べ替える方法

複数のプロパティに基づいて Java オブジェクトのリストを並べ替える方法

Mary-Kate Olsen
リリース: 2024-12-02 03:34:08
オリジナル
202 人が閲覧しました

How to Sort a List of Java Objects Based on Multiple Properties?

プロパティに基づいたオブジェクトのリストの並べ替え

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート