Comparator and Comparable 及Collections and Collection 的区别及联系?

05-03-23 wenxue_yang
Comparator and Comparable 及Collections and Collection 的区别及联系?能用例子说明吗?能给出如何实现Comparable接口的例子吗?

SportsBaby1980
2005-03-24 00:11
呵呵

这个标题还不是很完整

应该是和容器类的关系----〉比如 Set(SortedSet,TreeSet) Map(SortedMap,TreeMap) List之类的

为什么称为容器?---〉因为他们能盛放对象,那也就是容器了。

在相这些容器里加入新的对象的时候,如何判断该对象已经在容器中?或如何安排新加入的对象的序号?

这些问题你不用考虑,但java要考虑。
这个时候,就要使用要加入的对象的那个类的一些方法,比如 equals或hashCode(所以有时候实现这些方法是很必要的,尤其在实体对象中),但有的时候,这些可能还不行,或不能用这些方法,
那该如何处理?
这个时候就用到Comparator或Comparable了

拿TreeSet来讲,TreeSet有这么一个Constructor:
TreeSet(Comparator c)
这里用了一个Comparator接口作为参数,含义如下:
该TreeSet加入的对象,按照Comparator的比较结果排序------前提是,要实现一个implements Comparator的class,在这个class里,对
public int compare(Object o1, Object o2)
这个方法,完成o1和o2的比较结果,返回一个值-----〉这个值说明了o1和o2的顺序。


Comparable

int compareTo(Object o)
这个方法是整个Comparable 的精髓,
一个class实现了这个接口,说明这个class是可比较,

在这个class的实例上调用这个方法,
就是拿参数和这个实例进行比较,然后返回一个值,这个值说明了
这个对象和这个参数的顺序关系

具体可以参考String的实现


如果还有问题可以去我的网站发帖子


wenxue_yang
2005-03-25 09:10
呵呵,谢谢高手