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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Up↑Lee↗ 中级黑马   /  2014-3-30 16:23  /  831 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Up↑Lee↗ 于 2014-3-30 18:37 编辑
  1. class Student implements Comparable<Person
  2. {
  3.         public int compareTo(Person s)
  4.         {
  5.                 this.getName()
  6.         }
  7. }
  8. */
  9. class Comp implements Comparator<Person>
  10. {
  11.         public int compare(Person s1,Person s2)
  12.         {

  13.                 //Person s1 = new Student("abc1");
  14.                 return s1.getName().compareTo(s2.getName());
  15.         }
  16. }

  17. TreeSet<Student> ts = new TreeSet<Student>(new Comp());
  18. ts.add(new Student("abc1"));
  19. ts.add(new Student("abc2"));
  20. ts.add(new Student("abc3"));
复制代码

有关Comparable和Comparator比较器,这两个接口是相同的么??求解释

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
Comparable 是要比较的元素的类去实现其compareTo方法,

Comparator 是自定义比较器 去实现其compare方法
回复 使用道具 举报
1、Comparable是直接在一个类中指定比较方法,只需要调用Arrays.sort(待排序的对象数组即可)。

2、Comparator:这是当一个类,不能直接在类里面写比较方法的时候,我们在另一个类中写一个比较方法,做完挽救措施,排序的时候要:Arrays.sort(待排序的对象数组,指定的比较方法)。

回复 使用道具 举报
Comparable是让类自身具有比较性.
Comparator是比较器接口.
new TreeSet<Student>()是用的实现Commparable接口的中的方法进行比较
new TreeSet<Student>(new Comparator<>(){})是用的实现Comparator接口的中compare(Object o1,Object 02)进行比较。

顺序结果是否相同看实现方法比较逻辑是否一样了。
class Student implements Comparable<Person>
{     
        //返回值0时相同,正数时大于,负数时小于
        public int compareTo(Person s)
        {
                //显示比较过程
                System.out.println(this.getName()+" ---"+s.getName());
                //与比较器Comp排序一样               
                return this.getName().compareTo(s.getName());
                //与比较器Comp排序相反了
                //return s.getName().compareTo(this.getName());
        }
}
回复 使用道具 举报
清风木扬 发表于 2014-3-30 17:17
Comparable是让类自身具有比较性.
Comparator是比较器接口.
new TreeSet()是用的实现Commparable接口的中的 ...

恩恩  谢谢回复  搞明白了
回复 使用道具 举报
osully 发表于 2014-3-30 16:29
Comparable 是要比较的元素的类去实现其compareTo方法,

Comparator 是自定义比较器 去实现其compare方法

恩恩  精辟
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马