ホームページ >Java >&#&チュートリアル >オブジェクトの Java 配列を複数のフィールド (名前、年齢) で並べ替える方法

オブジェクトの Java 配列を複数のフィールド (名前、年齢) で並べ替える方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 00:38:13680ブラウズ

How to Sort a Java Array of Objects by Multiple Fields (Name then Age)?

Java での複数のフィールドによる並べ替え

データの並べ替えは、特に複雑なオブジェクトを扱う場合に Java で一般的なタスクです。複数のフィールドで並べ替える場合、操作の順序が重要になります。シナリオを考えてみましょう:

課題:

属性 age と name を持つ Person オブジェクトの配列が与えられた場合、この配列を名前のアルファベット順、次に年齢の順に並べ替えるにはどうすればよいでしょうか。 ?このタスクにはどのようなアルゴリズムが適していますか?

解決策:

オブジェクトのコレクションを複数のフィールドで並べ替えるために、Java は Collections.sort を提供します。これは、コンパレータを使用して並べ替えロジックを定義することで実現できます。実装方法は次のとおりです。

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

この並べ替えアルゴリズムは、最初にオブジェクトの名前を比較します。名前が等しい場合は、年齢の比較が始まります。 CompareTo メソッドは、文字列と整数の両方の比較に使用されます。

アルゴリズム:

ここで使用されるアルゴリズムは、マージ ソートとクイックソートのハイブリッドです。 Collections.sort は、Timsort のバリアントを利用します。これは、配列が名前によって部分的にソートされるという事実を利用した、効率的なハイブリッド ソート アルゴリズムです。

結果:

order メソッドを実行すると、提供された Person オブジェクトのリストが名前のアルファベット順、次に年齢の順に並べ替えられます。

以上がオブジェクトの Java 配列を複数のフィールド (名前、年齢) で並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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