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

Patricia Arquette
リリース: 2024-11-20 16:23:13
オリジナル
305 人が閲覧しました

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

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