直接上代码:
StudentSort.java
package org.bruce.container.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author yang3wei
*
* 程序输出为:
* score = 98, age = 26, name = bb
* score = 98, age = 25, name = aa
* score = 97, age = 88, name = cc
* score = 90, age = 23, name = dd
* score = 59, age = 28, name = ee
*/
public class StudentSort {
public static void main(String[] args) {
List<Student> stuList = new ArrayList<Student>();
stuList.add(new Student(98, 25, "aa"));
stuList.add(new Student(98, 26, "bb"));
stuList.add(new Student(97, 88, "cc"));
stuList.add(new Student(90, 23, "dd"));
stuList.add(new Student(59, 28, "ee"));
Collections.sort(stuList, new StudentComparator());
Collections.reverse(stuList);
for (Student stu : stuList) {
System.out.println(stu);
}
}
}
StudentComparator.java
package org.bruce.container.test;
import java.util.Comparator;
/**
* @author yang3wei
* 默认从小到大排序(要想从大到小排,Collections.reverse() 一下就行了)~
*/
public class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student stu0, Student stu1) {
// TODO Auto-generated method stub
int flag = new Integer(stu0.getScore()).compareTo(stu1.getScore());
if (flag == 0) {
return new Integer(stu0.getAge()).compareTo(stu1.getAge());
} else {
return flag;
}
}
}
Student.java
package org.bruce.container.test;
/**
* @author yang3wei
*
*/
public class Student {
private int score;
private int age;
private String name;
/**
* @param name
* @param age
*/
public Student(int score, int age, String name) {
this.score = score;
this.age = age;
this.name = name;
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("score = ").append(score).append(", age = ");
sb.append(age).append(", name = ").append(name);
return sb.toString();
}
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 getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}