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

Java オブジェクトを複数のフィールド (名前と年齢) で並べ替えるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-15 19:58:16
オリジナル
453 人が閲覧しました

How to Sort Java Objects by Multiple Fields (Name and Age)?

複数のフィールドによる Java オブジェクトの並べ替え: 名前と年齢

それぞれに整数の年齢と文字列の名前が含まれる Person オブジェクトの配列を考えます。 。このような配列を名前のアルファベット順に並べ替え、次に年齢順に並べ替えるには、カスタム並べ替えアルゴリズムが必要です。

Collections.sort の使用

Java Collections ライブラリには、組み込みの並べ替えメソッドが用意されています。以下を活用できます:

private static void order(List<Person> persons) {
    Collections.sort(persons, new Comparator<>() {
        @Override
        public int compare(Object o1, Object o2) {
            // Compare by name (lexicographically)
            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);
            // If names are different, return result
            if (sComp != 0) {
                return sComp;
            }
            // If names are equal, compare by age
            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
        }
    });
}
ログイン後にコピー

プロセスフロー

  1. compare メソッドを実装して Comparator をインスタンス化します。
  2. 2 つのオブジェクトの名前を (辞書編集的に) 比較します。異なる場合は結果を返します。
  3. 名前が等しい場合は、年齢を比較して結果を返します。

このカスタム Comparator を使用して Collections.sort を呼び出すと、配列を並べ替えることができます。人物オブジェクトを名前の昇順、次に年齢の昇順で並べます。

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

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