ホームページ >Java >&#&チュートリアル >Java でオブジェクトのリストを複数のフィールドで並べ替えるにはどうすればよいですか?

Java でオブジェクトのリストを複数のフィールドで並べ替えるにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-15 11:12:11845ブラウズ

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

Java での複数のフィールドによるオブジェクトの並べ替え

複数のフィールドによるデータの並べ替えは、プログラミングにおける一般的な操作です。この質問では、人物オブジェクトの配列を名前のアルファベット順、次に年齢順に並べ替える方法について説明します。

複数フィールドの並べ替えに Collections.sort を使用する

これを実現するには、次のようにします。 Collections.sort メソッドを利用すると、提供されたコンパレーターに基づいてカスタムの並べ替えが可能になります。 Comparator は 2 つのオブジェクトを比較する方法を決定し、複数フィールドの並べ替え戦略を定義できるようにします。

private static void order(List<Person> persons) {

    Collections.sort(persons, new Comparator() {

        public int compare(Object o1, Object o2) {

            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);

            if (sComp != 0) {
               return sComp;
            } 

            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
    }});
}

このコードでは、compare メソッドは最初に 2 つの人物オブジェクト (x1 と x2) の名前を比較します。 )。それらが異なる場合は、どちらの文字列が辞書編集的に大きいかを示す String.compareTo メソッドの結果を返します。名前が等しい場合、Integer オブジェクトの CompareTo メソッドを使用して年齢 (x1 と x2) を比較します。

この Comparator 戦略を使用することで、Collections.sort メソッドは人物オブジェクトのリストをアルファベット順に並べ替えます。名前順に並べ替えます。名前が等しい場合は、さらに年齢順に並べ替えます。

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

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