Comparable と Comparator は、コレクション内の要素の比較と並べ替えに使用されます。
、Comparable はパッケージ java にあります。 .lang、Comparator はパッケージ java.util の下にあり、
メソッドを実装する必要があります。 ( 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,
PersonComparator()) を使用できます。 3. 概要
Comparable インターフェイスを実装するが直接比較可能なオブジェクトになる限り、Comparable の使用は比較的簡単ですが、 はソース コードを変更する必要があり、そうすることでコードの結合 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 サイトの他の関連記事を参照してください。