Comparable和Comparator区别

参考:
comparable 和 Comparator 的区别

Comparable和Comparator的区别

两者区别

  • comparable接口出自java.lang包,需要重写compareTo(Object obj)方法来排序。相当于内部比较器,耦合性要强一些,因为是写在类上的。如果要修改比较算法,要修改Comparable接口的实现类。

  • comparator接口出自java.util包,需要重写compare(Object obj1,Object obj2)方法来排序。相当于外部比较器,是在外部进行比较的。不需要对实现类进行修改。

Comparator定制排序

Collections.sort(arrayList,new Comparator<Integer>(){
    @Override
    public int compare(Integer o1,Integer o2){
        return o2.compareTo(o1);//降序
    }
});

Collections.sort排序的类要实现自定义排序,如果类已经实现了Comparable接口就可以直接用。

String类、Integer类都已经实现了Comparable接口,所以可以直接调用compareTo方法。

Comparable定制排序

public class Person implements Comparable<Person>{
    private String name;
    private int age;
   ... getter/setter方法
   //按照年龄升序排序
   @Override
   public int compareTo(Person o){
       if(this.age>o.getAge()){
           return 1;
       }
       if(this.age<o.getAge()){
           return -1;
       }
       return 0;
   }
}
posted @ 2021-02-24 10:12  Jayzou11223  阅读(77)  评论(0)    收藏  举报