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