黑马程序员技术交流社区

标题: Comparator和Comprarable疑惑! [打印本页]

作者: wuchuang1992    时间: 2013-11-1 11:13
标题: Comparator和Comprarable疑惑!
请大牛给我说说Comparator和Comprarable两种方法实现排序?他们啥关系?
请写个简单的实例,谢谢!

作者: ciowok    时间: 2013-11-1 11:43
Comprarable:表示可以比较的,实现这个接口表示:这个类的实例可以比较大小,可以进行自然排序。
Comparator:比较工具,用于临时定义比较规则,不是默认的比较规则。
作者: 杨增坤    时间: 2013-11-1 11:55
Comparator和Comprarable:
         如果一个类的对象需要比较,存储到Set集合中,那么本身必须具备比较性,那么此类必须实现Comprarable接口,重写其方法。然后在重写方法中也出自己的比较规则。
            但是当一个类实现了Comprarable接口,那么比较规则就确定了,,在更改就需要更改源代码,但是这是比较麻烦的,
           那么怎样去更改原来类耳朵比较规则呢,那么就自定义比较器Comparator,自自定义类,实现Comparator接口,重写其方法,然后把比较器传给Set集合,然集合具备排序规则。这样就更方便。


希望对你有帮助!

作者: joechen    时间: 2013-11-1 12:18
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集合可以根据指定比较器进行排序
           
         
作者: 黄炳期    时间: 2013-11-1 12:45
如果问题已经解决,请重新编辑帖子为“提问结束”
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html






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