1.定義壹個Student類,包括學號,姓名,成績三個字段,生成get,set和toString方法,實現Comparable接口,重寫toCompare方法,方法裏就是本題的邏輯,先按成績比較,再按學好比較,使用TreeSet不實現這個接口會報錯。
package?Collection;public?class?Student?implements?Comparable<Student>?{
private?long?sno;
private?String?name;
private?int?score;
public?long?getSno()?{
return?sno;
}
public?void?setSno(long?sno)?{
this.sno?=?sno;
}
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
public?int?getScore()?{
return?score;
}
public?void?setScore(int?score)?{
this.score?=?score;
}
@Override
public?int?compareTo(Student?o)?{
//?TODO?Auto-generated?method?stub
if?(this.score?<?o.score)?{
return?1;
}?else?if?(this.score?>?o.score)?{
return?-1;
}?else?{
if(this.sno<o.sno)?{
return?1;
}else?{
return?-1;
}
}
}
@Override
public?String?toString()?{
return?"Student?[sno="?+?sno?+?",?name="?+?name?+?",?score="?+?score?+?"]";
}
}
2.然後寫測試類,生成十個學生,然後插入treeset,直接遍歷輸出就是排序好的結果。
package?Collection;import?java.util.Random;
import?java.util.TreeSet;
public?class?TreeSetTest?{
public?static?void?main(String[]?args)?{
TreeSet<Student>?ts=new?TreeSet<Student>();
for(int?i=0;i<10;i++)?{
Student?stu=new?Student();
stu.setName("student"+i);
stu.setSno(170201+i);
stu.setScore(90+new?Random().nextInt(10));
ts.add(stu);
}
for(Student?stu:ts)?{
System.out.println(stu);
}
}
}
最後貼壹個運行結果