1. 程式人生 > 其它 >Java案例——使用比較排序器comparator成績排序

Java案例——使用比較排序器comparator成績排序

需求:用TreeSet集合儲存多個學生資訊(姓名,語文成績,數學成績),並遍歷該集合;要按照總分從高到低進行排序

分析:

1.建立學生類 成員變數 姓名,語文成績、數學成績;成員方法 求總分;構造方法 無參構造,帶參構造; get\set方法

2.建立測試類

3.建立TreeSet集合對物件,並使用內部類的方式重寫compare方法

要定好排序規則,主要條件按照總分從高到底排序,在總分相同的情況下按照語文成績排序,在兩者都相同的情況下判斷姓名是否相同,相同就不儲存,不相同存進來,按照姓名字母進行排序

4.建立學生物件,並使用帶參構造新增學生資料

5.使用add方法將學生資料加入到TreeSet集合中

6.進行遍歷

 

程式碼實現:

Student類

public class Student {
  //成員變數
  private String name;
  private int YWscore;
  private int YYscore;

  //構造方法
  public Student(){}

  public Student(String name, int YWscore, int YYscore) {
      this.name = name;
      this.YWscore = YWscore;
      this.YYscore = YYscore;
  }
  //get/set方法

  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }

  public int getYWscore() {
      return YWscore;
  }

  public void setYWscore(int YWscore) {
      this.YWscore = YWscore;
  }

  public int getYYscore() {
      return YYscore;
  }

  public void setYYscore(int YYscore) {
      this.YYscore = YYscore;
  }
  //定義求總成績方法
  public int getSum(){
      int sum=YWscore+YYscore;
      return sum;
  }
}

測試類

public class StudentDemo {
  public static void main(String[] args) {
      //建立TreeSet集合物件
      TreeSet<Student>ts=new TreeSet<Student>(new Comparator<Student>() {
          @Override
          public int compare(Student s1, Student s2) {
//               return 0;
              int num=s2.getSum()-s1.getSum();//要從高到底排序
              int num1= num==0?s1.getYWscore()-s2.getYWscore():num;//當總分相同時按照語文成績排序
              int num2= num1==0?s1.getName().compareTo(s2.getName()):num1;
              return num2;
          }
      });
      //建立學生物件
      Student s1=new Student("張三",56,66);
      Student s2=new Student("張四",70,69);
      Student s3=new Student("張五",80,76);
      Student s4=new Student("張六",66,96);
      Student s5=new Student("張七",66,96);
      ts.add(s5);
      ts.add(s1);
      ts.add(s2);
      ts.add(s3);
      ts.add(s4);
      //遍歷
      for (Student ss:ts){
          System.out.println(ss.getName()+","+ss.getYWscore()+","+ss.getYYscore()+","+ss.getSum());
      }
  }
}