java(10)ComprableとCompratorのオブジェクト属性の比較

1829 ワード

一、CompratorとComprableの比較
  • Compparableは、並べ替えインターフェースである。一つのクラスがComprableインターフェースを実現すれば、「このクラスのサポートランキング」を意味します。
  • Compratorはコンパレータです。私たちはある種類の順序を制御する必要があるなら、「この種類のコンパレータ」を作って並べ替えられます。
  • Comprableは「内部比較器」に相当するが、Compratorは「外部比較器」に相当する。
    二、コードのデモンストレーション
    Comprable(内部比較器)
    //        
    class Dog implements Comparable {
        private String name;
        private int age;
    
        public Dog(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        //            
        @Override
        public int compareTo(Dog o) {
            return this.age - o.age;  //  Arrays.sort()                
        }
    
        @Override
        public String toString() {
            return "Dog{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    
    Comprator(外部比較器)
    //             Comparator
    class ReverSortDogName implements Comparator {
        @Override
        public int compare(Dog o1, Dog o2) {
            return o2.getName().compareTo(o1.getName());
        }
    }
    
    実行
    import java.util.Arrays;
    import java.util.Comparator;
    
    public class  {
        public static void main(String[] args) {
            
            Dog[] dogs = new Dog[]{new Dog("   ", 23), new Dog("xie", 18), new Dog("  ", 12)};
            // Arrays.sort(dogs);Comparable ,          age      
            // Arrays.sort(dogs, new ReverSortDogName()); Comparator, name           
            System.out.println(Arrays.toString(dogs));
        }
    
    
    }