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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓飞飞 中级黑马   /  2012-5-6 19:10  /  1429 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

importjava.util.*;
class  StudentAndSetDeno
{
       public static void main(String[] args)
       {
              Collection<Student> students= new TreeSet<Student>(new MyComparator());
              students.add(newStudent("dengfeifei1",23,85));
              students.add(newStudent("dengfeifei2",23,86));
              students.add(newStudent("dengfeifei3",23,87));
              students.add(newStudent("dengfeifei4",23,88));
              students.add(newStudent("dengfeifei5",23,89));
              Iterator<Student> it =students.iterator();
              while(it.hasNext())
              {
                     Student stu = it.next();
                     System.out.println(stu.getName()+","+stu.getAge()+","+stu.getGrade());
              }
       }
}
classMyComparator implements Comparator<Student>
{
       public int compare(Student stu1,Studentstu2)
       {
      //从大到小排序只需将比较的对象调过来就可以了
              int num = newInteger(stu2.getGrade()).compareTo(new Integer(stu1.getGrade()));
              return num;
       }
}
classStudent //用TreeSet集合存储自定以对象,我给集合自定义比较器了,那么这个自定义的类还需要实现Comparable接口和覆盖compareTo方法吗???
{
       private String name;
       private int age;
       private int grade;
       public Student(String name,int age,intgrade)
       {
              this.name = name;
              this.age = age;
              this.grade = grade;
       }
       public void setName(String name)
       {
              this.name = name;
       }
       public String getName()
       {
              return name;
       }
       public void setAge(int age)
       {
              this.age = age;
       }
       public int getAge()
       {
              return age;
       }
       public void setGrade(int grade)
       {
              this.grade = grade;
       }
       public int getGrade()
       {
              return grade;
       }
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
不需要了 ,只要实现一种方式就可以
1,自定义比较器
2,类实现Comparable接口,复写compareTo方法

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
自定义了个比较器,就不需要实现实现Comparable接口了。
就算你实现了,你传入的是自定义比较器,比较方式也是按照自定义的比较器规则比较的。
回复 使用道具 举报
TreeSet对元素进行排序的方式一:
                   让元素自身具备比较功能,元素就需要实现Comparable接口。覆盖compareTo
方法。如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序。怎么办?
                可以使用TreeSet集合第二种排序方式二:
                    让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方
法。将该类对象作为参数传递给TreeSet集合的构造函数。
二者用其一即可......
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马