Test.java
List<Student> list=new ArrayList<Student>();
list.add(s1);
list.add(s2);
list.add(s3);
Collections.sort(list);//单一类中的比较,实现comparable接口(如果没有实现这个接口的话,这个sort方法是不能用的,会报类转换异常),重写compareTo方法,自定义比较规则
Collections.sort(list, new MyComparator());//多个类间的比较,MyComparator类实现comparator接口(同上),重写compare方法,自定义比较规则
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).toString());
}
Student.java
public class Student implements Comparable{
private String name;
private String school;
public Student() {
super();
}
public Student(String name, String school) {
super();
this.name = name;
this.school = school;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
@Override
public String toString() {
return name+"毕业于:"+school;
}
@Override
public int compareTo(Object arg0) {
Student s=(Student) arg0;
int result=0;
result=this.getName().compareTo(s.getName());
if(result==0){
result=this.getSchool().compareTo(s.getName());
}
return result;
}
MyComparator.java
public class MyComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Student s1=(Student) o1;
Student s2=(Student) o2;
int result=0;
result=s1.getName().compareTo(s2.getName());//String类封装类,默认有comparableTo方法,直接用即可
if(result==0){
result=s1.getSchool().compareTo(s2.getSchool());
}
return result;
}
}