ホームページ >Java >&#&チュートリアル >Java Comparator と Comparable の違いの詳細な説明

Java Comparator と Comparable の違いの詳細な説明

黄舟
黄舟オリジナル
2017-03-14 11:56:001829ブラウズ


1. Comparable と Comparable の類似点

  • Comparable と Comparator は、コレクション内の要素の比較と並べ替えに使用されます。

  • 、Comparable はパッケージ java にあります。 .lang、Comparator はパッケージ java.util の下にあり、

  • カスタム クラスはサイズを比較するために 2 つのうちの 1 つを実装します。
2. Comparator と Comparable の違い

    Comparable は通常、クラスの内部で定義されますが、Comparator は通常、クラスの外部で定義されます
  • Comparable インターフェースを実装するには、その
  • を書き直す必要があります。 compareTo.Compareter Interfaceを実装するには、そのcompare compare

    メソッドを実装する必要があります。 ( personList ) 並べ替え用。 Comparator インターフェイスを実装します:

  • public class Person implements Comparable<Person> {
    
         private String name;     private int age;     @Override
         public int compareTo(Person another) {          int i = 0;
              i = name.compareTo(another.name);     // 使用String的compareTo方法
              if(i == 0) {      // 如果名字一样,比较年龄, 返回比较年龄结果
                   return age - another.age;
              } else {               return i;    // 名字不一样, 返回比较名字的结果.
              }
         }
    }
    public class Person{
         private String name;     private int age
    }
この時点で、並べ替えに Collections.sort(personList,
new

PersonComparator()) を使用できます。 3. 概要

Comparable インターフェイスを実装する
オブジェクト

が直接比較可能なオブジェクトになる限り、Comparable の使用は比較的簡単ですが、 はソース コードを変更する必要があり、そうすることでコードの結合 Comparator を使用する利点は、ソース コードを変更する必要がなく、コードの強い結合が発生しないことですが、さらに、カスタム オブジェクトを比較する必要がある場合は、コンパレータとコンパレータを実装します。オブジェクトを一緒に渡してサイズを比較できます


したがって、コードのスケーラビリティの観点からは、コンテナ内の要素を並べ替える Comparator インターフェイスを実装する方がよいでしょう。

  • 次の例を見てください:

    public class PersonComparator implements Comparator<Person> { 
         public int compare(Person one, Person another) {          int i = 0;
              i = one.name.compareTo(another.name);     // 使用String的compareTo方法
              if(i == 0) {      // 如果名字一样,比较年龄,返回比较年龄结果
                   return one.age - another.age;
              } else {               return i;    // 名字不一样, 返回比较名字的结果.
              }
         }
    }
    ここで、Honorperson クラスは Comparable02399d9a1f1e316db2800b805ab8bf0a インターフェイスを実装できません。言い換えると、Honorperson クラスは、次の比較メソッドのみを使用できます。 Person クラスが追加され、独自の比較を定義できなくなりました。
    public class HonorPerson extends Person{
         private String name;     private int age;     private STring degree;
    }
    public class PersonComparator implements Comparator<Person>{}
    ここで、Honorpersonとpersonはそれぞれ独自の比較方法を持っており、互いに影響を与えたり競合したりすることはありません。

以上がJava Comparator と Comparable の違いの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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