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

呵呵,谢谢高手