Comparator相当于一种通用的工具类接口。需要定制一个比较类去实现它,重写compare方法去实现。
===============================================================================
定义一个简单的学生类,来根据年龄大小来给学生排序
public class Test2 {
public static void main(String[] args) {
Person[] people= {
new Person(“YY”,18),
new Person(“LY”,21),
new Person(“MY”,19)};
Arrays.sort(people);
System.out.println(Arrays.toString(people));
}
}
class Person implements Comparable{
private String name;
private int age;
public Person(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(Person o) {
return this.age-o.age;
}
@Override
public String toString() {
return “name :”+name+“,”+“age :”+age;
}
}
重写compareTo方法,通过当前对象和参数的比较
二者相等是 return 0;
当前对象比参数大时 return 1;
当前对象比参数小时 return -1;
Comparable是排序接口;若一个类实现了Comparable接口,就意味着”该类支持排序。
最后根据自己的需求,重写compareTo方法就好了。
===============================================================================
import java.util.*;
//定义一个学生类 有姓名,年龄,性别
public class Person4 {
private String name;
private int age;
private String sex;
public Person4(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return “name:”+name+“,”+“age:”+age+“,”+“sex:”+sex;
}
}
//实现了Comparator 接口 重写compare方法
class Person4Comparator implements Comparator {
@Override
public int compare(Person4 o1, Person4 o2) {
return o1.getAge()-o2.getAge();
}
}
//测试类
class test{
public static void main(String[] args) {
List list=new ArrayList<>();
Person4 p1=new Person4(“YY”,18,“nv”);
Person4 p2=new Person4(“LY”,21,“nan”);
Person4 p3=new Person4(“XY”,22,“nv”);
list.add(p1);
list.add(p2);
list.add(p3);
//定义一个比较器
Person4Comparator comparator=new Person4Comparator();