比较器内部的返回值实际上意味着什么?
例如 :
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.
| 归档时间: |
|
| 查看次数: |
42921 次 |
| 最近记录: |