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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuchuang1992 中级黑马   /  2013-11-1 11:13  /  1453 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请大牛给我说说Comparator和Comprarable两种方法实现排序?他们啥关系?
请写个简单的实例,谢谢!

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

4 个回复

倒序浏览
Comprarable:表示可以比较的,实现这个接口表示:这个类的实例可以比较大小,可以进行自然排序。
Comparator:比较工具,用于临时定义比较规则,不是默认的比较规则。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
Comparator和Comprarable:
         如果一个类的对象需要比较,存储到Set集合中,那么本身必须具备比较性,那么此类必须实现Comprarable接口,重写其方法。然后在重写方法中也出自己的比较规则。
            但是当一个类实现了Comprarable接口,那么比较规则就确定了,,在更改就需要更改源代码,但是这是比较麻烦的,
           那么怎样去更改原来类耳朵比较规则呢,那么就自定义比较器Comparator,自自定义类,实现Comparator接口,重写其方法,然后把比较器传给Set集合,然集合具备排序规则。这样就更方便。


希望对你有帮助!

评分

参与人数 1黑马币 +3 收起 理由
黄炳期 + 3 哈哈

查看全部评分

回复 使用道具 举报
Comprarable和Comparator都是接口
Comprarable接口中的方法是 compareTo(T o)  比较此对象与指定对象的顺序 ,即用法是  对象1. compareTo(对象2),自己设计的类要实现 Comprarable接口,复写 Comprarable接口 中的比较方法,其返回值是int  (负数,0,正数)
Comparator接口中的比较方法是int compare(T o1, T o2) 比较用来排序的两个参数,使用方法是compare(对象1,对象2) 返回值是int(负数,0,正数)想建立自己特有的比较方式也需要实现Comparator接口 复写compare()方法

两者的不同是在comparator可以传入新建的集合TreeSet(comparator),那么TreeSet集合可以根据指定比较器进行排序
           
         

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请重新编辑帖子为“提问结束”
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html

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