[JAVA]有关比较器(Comparator接口)的用法及对象数组排序问题

跟上篇文章一样,今天讨论的对象也是Arrays.sort()方法与Comparator接口的相互用法。

当你想对一个普通的对象数组排序,怎么办?

这时候你应该想到的是,使用Comparator接口和Arrays.sort()结合使用。

Comparator也叫作比较器,用法在代码中体现。

首先,写一个比较器类。

import java.util.Comparator;  

public class StudentComparator implements Comparator<Student>{  
    public int compare(Student o1, Student o2) {  
        //当然可以用其他成员变量来作为衡量比较的标准 
        return o1.getNumber().compareTo(o2.getNumber());  
    }  
}  

现在,我创建了一个普通的学生类Student。存入数据:

import java.util.Arrays;  
public class Test {  
    public static void main(String[] args) {      
        Student sc = new Student("10000", "lz", 18);  
        Student sc1 = new Student("10001", "wx", 18);  
        Student sc2 = new Student("10003", "zh", 18);  
        Student sc3 = new Student("10002", "gd", 18);  
        Student scs[] = new Student[]{sc,sc1,sc2,sc3};  
        Arrays.sort(scs, new StudentComparator());//这里传出了一个比较器 
        for (int i = 0; i < scs.length; i++) {  
            System.out.println(scs[i].getNumber()+","+scs[i].getName()+","+scs[i].getAge());  
        }  
    }  
}  

看到Arrays.sort()里除了传递一个数组进去外,还有一个比较器。
这样就可以实现,对任何对象数组进行排序操作了。

但是值得注意的一点是,如果你Arrays.sort()方法中没传一个比较器的话,会抛出java.lang.ClassCastException异常。这点值得注意。

你可能感兴趣的:(java,对象排序,sort,comparator,比较器)