当前位置: 代码迷 >> J2SE >> 怎么理解Comparator那个接口中的升降序
  详细解决方案

怎么理解Comparator那个接口中的升降序

热度:24   发布时间:2016-04-23 20:05:50.0
如何理解Comparator那个接口中的升降序?
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小的。
  相关解决方案