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

Java でカスタム オブジェクトのリストを複数のプロパティで並べ替える方法

Susan Sarandon
リリース: 2024-11-30 13:31:11
オリジナル
221 人が閲覧しました

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

カスタム オブジェクトのコレクションを複数のプロパティで並べ替える方法

Collections.sort は、文字列などの単純なデータ型を並べ替えるのに便利です。ただし、カスタム オブジェクトを扱う場合、特定のプロパティに基づいて並べ替えるのは困難な場合があります。

名前、年齢、国などのプロパティを持つ Person クラスを考えてみましょう。 Person オブジェクトのリストを並べ替えるには、カスタマイズされたアプローチが必要です。

Comparator インターフェイスの紹介

解決策は、比較メソッドを提供する Comparator インターフェイスを実装することです。並べ替え順序を定義します。 Compare() メソッドをオーバーライドすることで、目的のプロパティに基づいて並べ替えロジックを指定できます。

public class PersonComparator implements Comparator<Person> {

    // Define the sorting order as an enum
    public enum Order { NAME, AGE, COUNTRY }

    private Order sortingBy = Order.NAME;

    @Override
    public int compare(Person person1, Person person2) {
        switch (sortingBy) {
            case NAME:
                return person1.getName().compareTo(person2.getName());
            case AGE:
                return person1.getAge().compareTo(person2.getAge());
            case COUNTRY:
                return person1.getCountry().compareTo(person2.getCountry());
            default:
                throw new RuntimeException("Invalid sorting order");
        }
    }

    // Method to set the sorting order
    public void setSortingBy(Order sortingBy) {
        this.sortingBy = sortingBy;
    }
}
ログイン後にコピー

Comparator の使用

次の条件で personList を並べ替えるには特定のプロパティを使用して、PersonComparator のインスタンスを作成し、希望の並べ替えを設定できます。 order.

public void sortPersonList(Order sortingBy) {
    PersonComparator comparator = new PersonComparator();
    comparator.setSortingBy(sortingBy);
    Collections.sort(personList, comparator);
}
ログイン後にコピー

適切な並べ替え順序でsortPersonList() メソッドを呼び出すことにより、指定されたプロパティに基づいて並べ替えられたリストを取得できます。このアプローチにより柔軟性が提供され、Person クラス自体を変更せずに複数のプロパティによる並べ替えが可能になります。

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

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