呵呵
这个标题还不是很完整
应该是和容器类的关系----〉比如 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的实现
如果还有问题可以去我的网站发帖子