A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© waterfox 中级黑马   /  2015-3-11 21:53  /  664 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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会是反序吗?


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马