Java Comparator,又叫比较器。
Comparator是java.util包里的一个接口,使用时应该实现导入相应的包,再写一个实现了Comparator接口的类,并复写int compare(Object o)方法,写出你的判断语句(例如:以下代码是按照年龄的递增顺序排序,年龄相同则按照工资的数目递增排序)把这个类添加到Arrays.sort()或Collections.sort()中(例如:定义一个list集合,用来存放对象,可以这样写:Collections.sort(list,new 实现类())),很简单,但是很好用。
//学生实体类
class Student{
public String name;
public int id;
public int age;
public Student(String name,int id, int age){
this.name = name;
this.id = id;
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", id=" + id + ", age=" + age + "]";
}
}
//重写比较器,实现按照id升序排序
class comparatorAscStudent implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2) {
//o1-o2代表升序:负数代表左值小于右值,排在上面;正数代表左值大于右值,排在下面;0代表左值等于右值,排在上面
//如果是o2-o1:则相反
return o1.id - o2.id;
}
}
public class ComparatorStudent {
public static void printArray(Student[] s){
for (int i = 0; i < s.length; i++) {
System.out.println(s[i].toString());
}
}
public static void main(String[] args) {
Student s1 = new Student("Jack",1,15);
Student s2 = new Student("Tom",2,23);
Student s3 = new Student("Michael",3,18);
Student[] s = {s2,s3,s1};
Arrays.sort(s,new comparatorAscStudent());
printArray(s);
}
}