我想做一个对Long型的数据进行排序的函数:如下
import java.util.*;
public class test {
public static void main(String[] arg)throws Exception {
Long ary[][]={{27785727527278L,7857852544545455L},{675785785757857L,978787878787L},{378787878787L,78787877857876L},{5787878787L,878787878785L}};//测试数据
                    //读入数据部分
sorttype s=new sorttype("A");//按A段排序
Arrays.sort(ary,s);//对二维数组排序
//创建写入对象
                  //writetofile file = new writetofile();
for(Long[] a:ary) {
for(Long i:a) 
System.out.print(i+"|");//测试输出
                                  System.out.println();

  }
 }
}//自定义实现排列顺序
class sort2 implements Comparator<int[]>{
private String ss;
    private int ind=0;
    public sort2(String s){
     if(s=="A")ss="0";
    else if(s=="B")ss="1";
    else ss="0";
}
    
    public int compare(int a[], int b[]) {
     int r;
        if(a[Integer.parseInt(ss.substring(ind,ind+1))]>b[Integer.parseInt(ss.substring(ind,ind+1))])
         r=1;
        else if(a[Integer.parseInt(ss.substring(ind,ind+1))]<b[Integer.parseInt(ss.substring(ind,ind+1))])
            r=-1;
        else r=0;
        ind++;
        if(ind>=ss.length()) ind=0;
        return r;
   }
}提示错误:The method sort(T[], Comparator<? super T>) in the type Arrays is not 
 applicable for the arguments (Long[][], sorttype)请问怎么改啊?

解决方案 »

  1.   

    The method sort(T[], Comparator<? super T>) in the type Arrays is not 
     applicable for the arguments (Long[][], sorttype)因为sort()方法的第一个对数是一维数组,而你调用的时候给的ary[][]是二维数组,当然会出错,改成一维的应该就可以了。
      

  2.   

    二维数线[n][n]可以当做n个一维数组[n],每个数组的长度是n.
    注意多维数组的每一维可能长度不一致。import java.util.*;class Cmpr implements Comparator {
    public int compare(Object o1, Object o2) {
    if(((Long[])o1)[0].longValue()<((Long[])o2)[0].longValue())
    return 0;
    else if(((Long[])o1)[0].longValue()>((Long[])o2)[0].longValue())
    return 1;
    else if (((Long[])o1)[1].longValue()<((Long[])o2)[1].longValue())
    return 0;
    else if (((Long[])o1)[1].longValue()>((Long[])o2)[1].longValue())
    return 1;
    else
    return 0;
    }
    }public class Check5 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Long ary[][]={{27785727527278L,7857852544545455L},
          {675785785757857L,978787878787L},
          {378787878787L,78787877857876L},
          {5787878787L,878787878785L}};
            ArrayList list=new ArrayList();
            for(int i=0;i<ary.length;i++)
             list.add(ary[i]);
            Comparator comp = new Cmpr();
    Collections.sort(list, comp);
    for(int i=0;i<list.size();i++)
    {
       Long elems[]=(Long[])list.get(i);
       for(int j=0;j<elems.length;j++)
       System.out.println(elems[j]+" ");
       System.out.println();
    }

    }}
      

  3.   

    上面是按行比较的,第行只有两个元素。
    注意上面打印的时候第一个println应该为print()