我想做一个对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)请问怎么改啊?
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)请问怎么改啊?
解决方案 »
- java调用并口打印机打印并获取状态的问题,纠结了好久还是不行?请大侠指点迷津
- 问几个简单的语句~
- swing弹出Dialog,为了不出新明显的刷新Dialog感觉,dialog对象只有一个,无法去除第一个面板中组件最后第二个窗口的组件与之前同名面板中组件重叠
- HTML中嵌入JAVA APPLET.jar
- 【新手提问】鼠标事件问题.为什么非得重写父类的方法才能实现单击事件?
- java中如何将一个文件映射到盘符?
- JFrame内容需要调整窗口大小,才正确显示
- 怎样触发choice的事件
- 基础问题:Object.equals()。请各位高手解惑!!~~谢谢!~~~
- 新人纠结的小问题
- Linux和Unix上的“ODBC” ?
- 异常一问
applicable for the arguments (Long[][], sorttype)因为sort()方法的第一个对数是一维数组,而你调用的时候给的ary[][]是二维数组,当然会出错,改成一维的应该就可以了。
注意多维数组的每一维可能长度不一致。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();
}
}}
注意上面打印的时候第一个println应该为print()