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;
}
}
信心最重要