ホームページ  >  記事  >  Java  >  Javaで複数のプロパティによってオブジェクトのリストを並べ替えるにはどうすればよいですか?

Javaで複数のプロパティによってオブジェクトのリストを並べ替えるにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-20 16:23:13306ブラウズ

How to Sort a List of Objects by Multiple Properties in Java?

Java での複数のプロパティによるオブジェクトのリストの並べ替え

Java では、プロパティごとにオブジェクトのリストを並べ替えるにはコンパレータを使用する必要があります。次の例を考えてみましょう。

public class ActiveAlarm {
    public long timeStarted;
    public long timeEnded;
    // ... other fields
}

ActiveAlarm オブジェクトのリストを timeStarted と timeEnded の両方で昇順に並べ替えるには、ネストされたコンパレータを使用できます。

List<ActiveAlarm> alarms = ...;

Comparator<ActiveAlarm> comparator =
    Comparator.comparing(alarm -> alarm.timeStarted)
              .thenComparing(alarm -> alarm.timeEnded);

Collections.sort(alarms, comparator);

使用Java 8 ラムダ式

Java 8 では、コンパレータを表す簡潔な方法を提供するラムダ式が導入されました。

Comparator<ActiveAlarm> comparator =
    (alarm1, alarm2) -> {
        int result = Long.compare(alarm1.timeStarted, alarm2.timeStarted);
        if (result == 0) {
            result = Long.compare(alarm1.timeEnded, alarm2.timeEnded);
        }
        return result;
    };

代替ソート方法

代わりに、プロパティに直接アクセスするカスタム Comparator 実装を使用することもできます。

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;
    }
};

コンパレータを使用すると、プロパティの任意の組み合わせおよび順序でオブジェクトのリストを簡単に並べ替えることができます。

以上がJavaで複数のプロパティによってオブジェクトのリストを並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。