ホームページ  >  記事  >  Java  >  Java の Arrays.sort() メソッドはカスタム コンパレータによって配列をどのようにソートしますか?

Java の Arrays.sort() メソッドはカスタム コンパレータによって配列をどのようにソートしますか?

王林
王林オリジナル
2023-11-18 11:36:57936ブラウズ

Java の Arrays.sort() メソッドはカスタム コンパレータによって配列をどのようにソートしますか?

Java の Arrays.sort() メソッドは、カスタム コンパレータに従って配列をどのように並べ替えるのでしょうか?

Java では、Arrays.sort() メソッドは配列を並べ替えるのに非常に便利なメソッドです。デフォルトでは、このメソッドは昇順で並べ替えます。ただし、場合によっては、独自に定義したルールに従って配列を並べ替える必要があります。このとき、カスタムコンパレータ(Comparator)を使用する必要があります。

カスタム コンパレーターは、特定のニーズに応じて比較ルールを定義できる Comparator インターフェイスを実装するクラスです。カスタム コンパレータは、基本タイプやカスタム タイプを含むあらゆるタイプのオブジェクトを並べ替えることができます。

次に、カスタム コンパレータを使用して Java の Arrays.sort() メソッドを並べ替える方法を紹介し、サンプル コードをいくつか示します。

  1. カスタム コンパレータを定義するにはどうすればよいですか?

カスタム コンパレータを定義するには、Comparator インターフェイスを実装し、compare メソッドをオーバーライドするだけです。 Compare メソッドには 2 つのパラメータがあります。このメソッドでは比較ルールを定義する必要があります。比較ルールには次のような状況があります:

  • obj1
  • obj1 == obj2、0 を返します;
  • obj1 > obj2、正の整数を返します;

キー コードは次のとおりです:

public class MyComparator implements Comparator<T> {
    @Override
    public int compare(T o1, T o2) {
        // 你的自定义比较规则
        return 0;
    } 
}
  1. カスタム比較を使用して配列を並べ替える方法は?

Arrays.sort() メソッドには複数のオーバーロードされたバージョンがあり、そのうちの 1 つはカスタム コンパレータを受け入れます。独自に定義したコンパレータをこのメソッドの 2 番目のパラメータとして使用できるため、独自のルールに従って配列を並べ替えることができます。

キーコードは次のとおりです:

public static <T> void sort(T[] a, Comparator<? super T> c) 

このうち、T[] a はソート対象の配列を表し、Comparator super T> c はコンパレータを表します。

  1. サンプル コード

具体的な例を見てみましょう。Student クラスがあるとします。このクラスには、name と age という 2 つのメンバー変数が含まれています。ここで、Student 配列を年齢の小さい順に並べ替える場合は、カスタム コンパレーターを定義する必要があります。サンプル コードは次のとおりです:

public class StudentComparator implements Comparator<Student> {
    @Override
    public int compare(Student o1, Student o2) {
        return o1.age - o2.age;
    } 
}

上記のコードでは、Comparator インターフェイスを実装し、compare メソッドをオーバーライドする StudentComparator クラスを定義します。比較方法では、年齢に焦点を当てて比較します。 o1 の年齢が o2 の年齢より小さい場合は負の整数が返され、o1 の年齢が o2 の年齢と等しい場合は 0 が返され、o1 の年齢が o2 の年齢より大きい場合は正の整数が返されます。

次に、Arrays.sort() メソッドを使用して、定義したルールに従って Student 配列を並べ替えます。

public class Main {
    public static void main(String[] args) {
        Student[] students = new Student[3];
        students[0] = new Student("Tom", 20);
        students[1] = new Student("Jack", 18);
        students[2] = new Student("Lucy", 22);
        
        Arrays.sort(students, new StudentComparator());
        
        for (Student student : students) {
            System.out.println(student.name + " " + student.age);
        }
    }
}

出力結果は次のとおりです:

Jack 18
Tom 20
Lucy 22

この結果から、定義したルールに従って、Student 配列が年齢順に小さいものから大きいものへと並べ替えられていることがわかります。

  1. 概要

Arrays.sort() メソッドは、あらゆる種類の配列を並べ替えることができる非常に便利なメソッドです。独自に定義したルールに従って配列を並べ替える必要がある場合は、Comparator インターフェイスを実装し、compare メソッドを書き直すだけで済みます。具体的な実装プロセスは上記の通りですので、皆様の参考になれば幸いです。

以上がJava の Arrays.sort() メソッドはカスタム コンパレータによって配列をどのようにソートしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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