定义一个二维数组int[] ary={{2,5,1,0,6},{6,9,4,8,5},{3,6,4,7,5},{2,3,1,5,7}};
有一个方法groupSort(int[][] ary,String groupNum){};
此方法的第一个参数接收一个数组,第二个参数接收一个字符串,此字符串表示按照二维数组的哪几列排序,以逗号隔开,如"0,2",排序后行内的值和顺序不能改变,
此功能娄似于数据库中的Group by 语名的作用.
请哪位高手指点哈,最好给出code for java or for C#都行.
有一个方法groupSort(int[][] ary,String groupNum){};
此方法的第一个参数接收一个数组,第二个参数接收一个字符串,此字符串表示按照二维数组的哪几列排序,以逗号隔开,如"0,2",排序后行内的值和顺序不能改变,
此功能娄似于数据库中的Group by 语名的作用.
请哪位高手指点哈,最好给出code for java or for C#都行.
{
ArrayList result = new ArrayList();
if(groupNum != null && !"".equals(groupNum))
{
try{
String []sortIndex = groupNum.split(",");
for(int i=0; i< sortIndex.length;i++)
{
int colIndex = Integer.parseInt(sortIndex[i]);
result.add(arr[i]);
}
}catch(Exception ex)
{
//
}
}
return result;
}
没测试,不知道对不对,楼主就参考以下就行,详细的细节自己搞定吧,但愿别误导了你
是:int[][] ary
public class test {
public static void main(String[] arg)throws Exception {
int ary[][]={{2,5,1,0,6},{6,9,4,8,5},{3,6,4,7,5},{2,3,1,5,7}};
sort2 s=new sort2("0213");
Arrays.sort(ary,s);
for(int[] a:ary) {
for(int i:a) System.out.print(i+" ");
System.out.println();
}
}
}
class sort2 implements Comparator<int[]>{
private String ss;
private static int ind=0;
public sort2(String s){ss=s+"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++;
return r;
}
}