天天看點

比較器Comparable和Comparator的使用

比較器Comparable和Comparator的使用

Comparable:為内部比較器

Comparator:為外部比較器

Comparable的使用

public class Test {
    public static void main(String[] args) {
        Car[] cars= {new Car("奧迪", 12),
                new Car("奔馳",18),
                new Car("qq",10)
        };

        Arrays.sort(cars);
        System.out.println(Arrays.toString(cars));

    }
}
class Car implements Comparable<Car> {
    private String name;
    private double age;

    public Car(String name, double age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public int compareTo(Car o) {
        return Double.compare(this.age,o.age);
    }

}
           

Comparator的使用

Dog實體類:

public class Dog {
    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 String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
           

MyComparator類:

public class MyComparator implements Comparator<Dog> {
    @Override
    public int compare(Dog o1, Dog o2) {
        return o1.getAge()-o2.getAge();
    }
}
           

測試類:

public class Test {
    public static void main(String[] args) {
        Dog[] dogs={
                new Dog("耀龍",30),
                new Dog("雞兒龍",18),
                new Dog("haha",17)
        };

        Arrays.sort(dogs,new MyComparator());
        System.out.println(Arrays.toString(dogs));
    }
}