黑马程序员技术交流社区

标题: Comparable跟Comparator有什么不同? [打印本页]

作者: 陈嘉宾    时间: 2012-5-30 16:27
标题: Comparable跟Comparator有什么不同?
Comparable跟Comparator有什么不同?
作者: 丰亚彬    时间: 2012-5-30 16:32
都是让对象或者集合具备比较性的,区别嘛。。。
Comparable接口是让集合中元素自身有比较性,嘿嘿
如果元素自身不具备比较性,或者说具备的比较性不是所需要的话,那么这时
需要让集合自身具备比较性,这个时候用Comparator接口创建一个子类对象给集合,这样集合就有了比较性
至于怎么用嘛。。。
我感觉首先应该是先让元素本身具有比较性就是定义元素时候实现Comparator接口,然后才考虑Comparator接口对象
作者: 张亭    时间: 2012-5-30 16:53
本帖最后由 张亭 于 2012-5-30 16:56 编辑

从名字上看也能看出点区别来了,
Comparable,形容词,可比较的
Comparator,名词,比较器

意思是说,实现了Comparable就具备了比较性,按API的说法:此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序.

如果某个类没有这种自然排序或者有自然排序(已经实现了Comparable,具备了一个比较顺序),但这个顺序不是你想要的,在不改动源码的情况下,
想要有别的排序方法,就建立个比较器(实现Comparator的类),将对象以此比较器中的设计的方法进行比较,排序,这叫定制排序

作者: 张亮    时间: 2012-5-30 20:09
一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。
Comparator可以看成一种算法的实现,将算法和数据分离,Comparator也可以在下面两种环境下使用:
1、类的设计师没有考虑到比较问题而没有实现Comparable,可以通过Comparator来实现排序而不必改变对象本身
2、可以使用多种排序标准,比如升序、降序等

还是不明白,参考这个网址:http://www.iteye.com/problems/3025




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