学生类如下:
public class Student implements Comparable{
String id;
String name;
int score;
public Student(String id,String name,int score) {
this.id = id;
this.name = name;
this.score = score;
}
public void info() {
System.out.println("学号:"+id+"年龄"+name+"分数"+score);
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
if(this.score>((Student)o).score) {//这样是从小到大
return 1;
}else if(this.score==((Student)o).score) {
return 0;
}else {
return -1;
}
}
}
其中按照学生成绩进行分类
public class TestStudent {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s1 = new Student("01","张三",75);
Student s2 = new Student("02","李四",92);
Student s3 = new Student("03","王五",82);
ArrayList<Student> st =new ArrayList<Student>();
st.add(s1);
st.add(s2);
st.add(s3);
System.out.println("排序前");
for(Student s:st) {
s.info();
}
System.out.println("按照分数从低到高排序");
Collections.sort(st);
for(Student s:st) {
s.info();
}
}
运行结果
按照分数从低到高排序
学号:01年龄张三分数75
学号:03年龄王五分数82
学号:02年龄李四分数92
如果修改compareTo中的代码,将-1和1的位置调换,则排序为从高到低排序