import java.util.*;
class DescType implements Comparator
{
public int compare(Object o1, Object o2)
{
Integer i = (Integer)o1;
Integer j = (Integer)o2;
return (i<j?1:(i==j?0:-1));
}
}
public class Hello
{
public static void main(String[] args)
{
Integer a[] = {3, 1, 2};
Arrays.sort(a, new DescType());
for(int i:a)
System.out.println(i);
}
}
我的理解是: x<y为1即为真。。。也就是第一个参数比第二个参数小为真。。应该是升序排列啊,这里却是降序排列的
谁来给讲解清楚点?
------解决思路----------------------
compare函数的机制是自定义下若o1>o2则返回1,而楼主的代码中若1<2会返回1,即在楼主的自定义下,其实1是大于2的(即compare(1,2)=1),同理,2也会大于3.那么Array.sort()从小到大排序时其实3是最小的,故输出321,表面上是逆序了,实际是符合楼主compare函数中的定义的,还是从小到大输出,只不过楼主自定义下3是比1小的。