一、Comparable,内部比较器
写在排序对象的内部
排序接口
一个实现了该接口的类,可以通过如下方法排序
Collections.sort
Arrays.sort
该接口只有一个compareTo方法
class Person implements Comparable<Person>{
private int age;
private String name;
@Override
public int compareTo(Person person) {
// 升序排列
return this.getAge()-person.getAge();;
}
}
二、Comparator,外部比较器
匿名内部类的方式,在list需要排序的时候,才具体定义排序的规则。
在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口。
//Lambda简化Comparator接口匿名内部类写法
public static void main(String[] args) {
Employee[] test=new Employee[3];
test[0]=new Employee("zjs",2000,180);
test[1]=new Employee("zs",200,188);
test[2]=new Employee("ll",1000,166);
Arrays.sort(test,(o1,o2)->{
if (o1.getHeight()>o2.getHeight()){
return 1;
}else if (o1.getHeight()<o2.getHeight()){
return -1;
}else {
return 0;
}
});
for (Employee employee : test) {
System.out.println("name="+employee.getName()+",salary="+employee.getSalary()+" height="+employee.getHeight());
}
}