Java案例——使用比較排序器comparator成績排序
阿新 • • 發佈:2022-03-29
需求:用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());
}
}
}