黑马程序员技术交流社区

标题: TreeSet比较器的问题 [打印本页]

作者: 戎石锁    时间: 2012-8-21 11:21
标题: TreeSet比较器的问题
o1与o2谁是先被添加的元素?
class MyCompare implements Comparator
{
        public int compare(Object o1,Object o2)
        {
                                
        }
}
作者: 刘芮铭    时间: 2012-8-21 11:40
o1先  o2后
作者: 杨鹏鹏    时间: 2012-8-21 12:20
JDK说的很明白
int compare(T o1,
            T o2)比较用来排序的两个参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
在前面的描述中,符号 sgn(expression) 表示 signum 数学函数,根据 expression 的值为负数、0 还是正数,该函数分别返回 -1、0 或 1。

实现程序必须确保对于所有的 x 和 y 而言,都存在 sgn(compare(x, y)) == -sgn(compare(y, x))。(这意味着当且仅当 compare(y, x) 抛出异常时 compare(x, y) 才必须抛出异常。)

实现程序还必须确保关系是可传递的:((compare(x, y)>0) && (compare(y, z)>0)) 意味着 compare(x, z)>0。

最后,实现程序必须确保 compare(x, y)==0 意味着对于所有的 z 而言,都存在 sgn(compare(x, z))==sgn(compare(y, z))。

虽然这种情况很普遍,但并不 严格要求 (compare(x, y)==0) == (x.equals(y))。一般说来,任何违背这个条件的 Comparator 都应该清楚地指出这一事实。推荐的语言是“注意:此 Comparator 强行进行与 equals 不一致的排序。”


参数:
o1 - 要比较的第一个对象。
o2 - 要比较的第二个对象。

返回:
根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。




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