黑马程序员技术交流社区

标题: 一道基础测试题想到的问题 [打印本页]

作者: waterfox    时间: 2015-3-11 21:53
标题: 一道基础测试题想到的问题
本帖最后由 waterfox 于 2015-3-11 21:56 编辑

/**第十题:声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)。


  1. import java.util.Comparator;
  2.     //由于Set是实现了Comparator接口,那么重写compare方法,将 比较器放入TreeSet(Comparator<? super E> comparator) 方法中,就可以排序完遍历集合了
  3.     public class recompare implements Comparator<Student>{   
  4.     public int compare(Student s1, Student s2) {
  5.         //compare方法有两个比较参数
  6.         //如果第一个参数大于第二个,希望升序,那么返回正数
  7.         //如果第一个参数小于第二个参数,希望升序,那么返回负数
  8.         //如果两者相同,返回0
  9.         return s2.score-s1.score;  
  10.     }
  11. }
复制代码




这道题我是根据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会是反序吗?







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2