需求:创建5个学生对象
属性:(姓名,年龄,语文成绩,数学成绩,英语成绩),
按照总分从低到高输出到控制台
如果总分一样,按照语文成绩排
如果语文一样,按照数学成绩排
如果数学成绩一样,按照英语成绩排
如果英文成绩一样,按照年龄排
如果年龄一样,按照姓名的字母顺序排
如果都一样,认为是同一个学生,不存。
import java.util.TreeSet;
public class test {
public static void main(String[] args) {
//需求:创建5个学生对象
Student student1=new Student("zhangsan",23,78,90,65);
Student student2=new Student("lisi",24,78,76,68);
Student student3=new Student("wangwu",21,90,90,83);
Student student4=new Student("zhaoliu",22,72,84,66);
Student student5=new Student("xiaoyu",25,54,90,86);
//创建TreeSet集合把数据存进去
TreeSet<Student> ts=new TreeSet<>();
ts.add(student1);
ts.add(student2);
ts.add(student3);
ts.add(student4);
ts.add(student5);
System.out.println(ts);
}
}
public class Student implements Comparable<Student>{
//属性:(姓名,年龄,语文成绩,数学成绩,英语成绩),
private String name;
private int age;
private int Chinese;
private int Math;
private int English;
public Student() {
}
public Student(String name,int age,int Chinese,int Math,int English){
this.name=name;
this.age=age;
this.Chinese=Chinese;
this.Math=Math;
this.English=English;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getChinese() {
return Chinese;
}
public void setChinese(int chinese) {
Chinese = chinese;
}
public int getMath() {
return Math;
}
public void setMath(int math) {
Math = math;
}
public int getEnglish() {
return English;
}
public void setEnglish(int english) {
English = english;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", Chinese=" + Chinese +
", Math=" + Math +
", English=" + English +
'}';
}
//重写接口中的比较方法
@Override
public int compareTo(Student o) {
int sum1=this.getChinese()+this.getEnglish()+this.getMath();
int sum2=o.getChinese()+o.getMath()+o.getEnglish();
//按照总分从低到高输出到控制台
int i=sum1-sum2;
//如果总分一样,按照语文成绩排
i= i==0?this.getChinese()-o.getChinese():i;
//如果语文一样,按照数学成绩排
i= i==0?this.getMath()-o.getMath():i;
//如果数学成绩一样,按照英语成绩排
i= i==0?this.getEnglish()-o.getEnglish():i;
//如果英文成绩一样,按照年龄排
i= i==0?this.getAge()-o.getAge():i;
//如果年龄一样,按照姓名的字母顺序排
i= i==0?this.getName().compareTo(o.getName()):i;
//如果都一样,认为是同一个学生,不存。
return i;
}
}