有个Student类,这个类写了个sum()方法求总分(返回值是int型)
在main中创建了Student对象数组stt,根据总分从高到低,用sort(Object[] a,Comparator c)来进行排序.该怎么写,特别不理解Comparator c该怎么来实现???
请指教!!!

解决方案 »

  1.   

    import java.util.*;
    class Student
    {
    int number;
    double grade;//grade是sum()的结果
    static class StudentComparator implements Comparator
    {
    public int compare(Object o1,Object o2)
    {
    Student s1=(Student)o1;
    Student s2=(Student)o2;
    int result=s1.grade>s2.grade ?-1:(s1.grade==s2.grade?0:1);
    if(result==0)
    {
    result=s1.number<s2.number ?-1:(s1.number==s2.number ?0:1);
    }
    return result;
    }
    }
    public Student(int number,double grade)
    {
    this.number= number;
    this.grade= grade;
    }
    public String toString()
    {
    return number+":"+grade;
    }
    }
    class StudentTest
    {
    public static void main(String[] args)
    {
    Student[] stt= new Student[4];
    stt[0]= new Student(1602020601,87.5);
    stt[1]= new Student(1602020602,76);
    stt[2]= new Student(1602020603,91.5);
    stt[3]= new Student(1602020604,87.5);
    Arrays.sort(stt,new Student.StudentComparator());
    for(int i=0;i<4;i++)
    {
    System.out.println(stt[i]);
    }
    }
    }
    Comparator是一个比较器,可以按照这种方式来比较,增加了灵活性
      

  2.   

    ^_^
    没有看清你的sum()的返回类型是int
      

  3.   

    Comparator 是一个比较器,你需要提供一个关于Student的比较器
    它里面只有一个方法 compare(Object o1, Object o2);其中o1, o2就是你数组里面存放的对象,这个方法是被不断的调用而你需要做的是
    如果你认为 o1 > o2 则返回大于0, o1 == o2 返回 0; o1 < o2 返回 小于0