本帖最后由 waterfox 于 2015-3-11 21:56 编辑
/**第十题:声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)。
- import java.util.Comparator;
- //由于Set是实现了Comparator接口,那么重写compare方法,将 比较器放入TreeSet(Comparator<? super E> comparator) 方法中,就可以排序完遍历集合了
- public class recompare implements Comparator<Student>{
- public int compare(Student s1, Student s2) {
- //compare方法有两个比较参数
- //如果第一个参数大于第二个,希望升序,那么返回正数
- //如果第一个参数小于第二个参数,希望升序,那么返回负数
- //如果两者相同,返回0
- return s2.score-s1.score;
- }
- }
复制代码
这道题我是根据TreeSet的修改默认的compare方法写出来的。默认是自然排序,首先:
我重写的compare()方法
public int compare(Student s1, Student s2)
是比较Student这个对象,默认是比较Student对象的所有参数进行排序,例如name,age,score进行自然排序。
那么我现在返回的值是
s2.score-s1.score 正序
排序的结果是根据score进行正序的。
那么问题是 :
score正序,Student的其他参数name和age都会正序吗?
如果score是反序的,那么Student的其他参数name和age会是反序吗?
|
|