从比较器返回类型

Paw*_*wan 27 java

比较器内部的返回值实际上意味着什么?

例如 :

class TreeSetDemo
{
    public static void main(String arg[])
    {
        TreeSet t=new TreeSet(new MyComparator());
        t.add(new Integer(20));
        t.add(new Integer(10));
        t.add(new Integer(30));
        t.add(new Integer(100));
        System.out.println(t); 
    }    

    class MyComparator implements Comparator 
    {    
        public int compare(Object o1, Object o2) 
        {
            return 0;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果返回类型为1则实际返回

[20,10,30,100]

如果返回类型为-1,则实际返回

[100,30,10,20]

如果返回类型为0则其实际返回

[20]

请告诉我这表明了什么?

RHS*_*ger 72

返回value(不是type,类型是int)告诉调用者(排序数据的东西):

-1 : o1 < o2
0 : o1 == o2
+1 : o1 > o2
Run Code Online (Sandbox Code Playgroud)

如果总是为比较器返回相同的值(o,1,-1),无论它的输入如何,那么你都没有正确使用它.您需要根据传入的值返回返回值.这个想法是数据结构(或分类器)在需要订购两个元素时调用比较函数,以找出将它们放入的顺序.

值得注意的是,正/负整数值(-1,+ 1)不需要为1,它们可以是任何正/负数.通常的做法是返回-1/+ 1.