创建一个Student类实现Comparable接口并重写compareTo方法
private String nameString;
private int age;
private int score;
public Student() {
super();
}
public Student(String nameString, int age, int score) {
super();
this.nameString = nameString;
this.age = age;
this.score = score;
}
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
//按照成绩降序,this-o为升序,o-this为降序
//return this.score-o.score; //升序
return o.score-this.score; //降序
}
@Override
public String toString() {
return "Student [nameString=" + nameString + ",
age=" + age + ", score=" + score + "]";
}
}
测试类
public class ArraysDemo {
public static void main(String[] args) {
Student stu1=new Student("qwe",23,78);
Student stu2=new Student("asd",22,86);
Student stu3=new Student("zxc",23,78);
Student stu4=new Student("rty",21,35);
Student stu5=new Student("fgh",25,57);
Student[] ss= {stu1,stu2,stu3,stu4,stu5};
Arrays.sort(ss);
for(Student student:ss) {
System.out.println(student.toString()+" ");
}
}
}
重写compareTo方法其中返回 this-o升序,o-this是降序
示例使用成绩进行排序
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
//按照成绩降序,this-o为升序,o-this为降序
//return this.score-o.score; //升序
return o.score-this.score; //降序
}
升序 return this.score-o.score; 结果
Student [nameString=rty, age=21, score=35]
Student [nameString=fgh, age=25, score=57]
Student [nameString=qwe, age=23, score=78]
Student [nameString=zxc, age=23, score=78]
Student [nameString=asd, age=22, score=86]
降序 return o.score-this.score; 结果
Student [nameString=asd, age=22, score=86]
Student [nameString=qwe, age=23, score=78]
Student [nameString=zxc, age=23, score=78]
Student [nameString=fgh, age=25, score=57]
Student [nameString=rty, age=21, score=35]
当成绩相同时可以添加条件来
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
if(o.score==this.score) {
return this.age-o.age;//年龄升序
}
return o.score-this.score;//按照成绩降序,this-o为升序,o-this为降序
}
结果
Student [nameString=asd, age=22, score=86]
Student [nameString=zxc, age=22, score=78]
Student [nameString=qwe, age=23, score=78]
Student [nameString=fgh, age=25, score=57]
Student [nameString=rty, age=21, score=35]