代码如下:
package com.hs.jp.lys;
import java.util.Arrays;
import java.util.Comparator;
/** */ /**
* GroupBy
* @author linys
* @extends ArraysComparator
* @E-mail tolys@126.com
* @version 1.0
*/
public class GroupBy extends ArraysComparator ... {
public GroupBy(Object[][] array )...{
Arrays.sort(array, new ArraysComparator());
}
public GroupBy(Object[][] array ,int keyColumn,int sortOrder )...{
Arrays.sort(array, new ArraysComparator(keyColumn,sortOrder));
}
public GroupBy(Object[][] array ,int keyColumn)...{
Arrays.sort(array, new ArraysComparator(keyColumn));
}
}
class ArraysComparator implements Comparator ... {
//设置缺省列
private int column = 0;
//设置缺省排序方式 (1:升序 -1:降序)
private int orderFlag = 1;
public ArraysComparator() ...{
}
public ArraysComparator(int column) ...{
this.column = column;
}
public ArraysComparator(int column, int orderFlag) ...{
this.column = column;
this.orderFlag = orderFlag;
}
public int compare(Object objOne, Object objTwo) ...{
if (objOne instanceof String[]) ...{
return orderFlag * ((String[]) objOne)[column].compareTo(((String[]) objTwo)[column]);
} else if (objOne instanceof int[]) ...{
return orderFlag * (((int[]) objOne)[column] - ((int[]) objTwo)[column]);
} else ...{
return 0;
}
}
}
Test Case:
package
com.hs.jp.lys;
/** */ /**
* TestGroupBy
* @author linys
*
*/
public class TestGroupBy ... {
/** *//**
* @param args
*/
public static void main(String[] args) ...{
String[][] arr = ...{
...{ "1", "A", "N" },
...{ "2", "O", "B" },
...{ "3", "P", "A" }
};
// 缺省(按0列升序)
new GroupBy(arr);
printResult(arr);
// 按0列降序
new GroupBy(arr,0,-1);
printResult(arr);
}
public static void printResult(Object[][] arr) ...{
for (int i = 0; i < arr.length; i++) ...{
for (int j = 0; j < arr[i].length; j++) ...{
System.out.print(arr[i][j] + " ");
}
System.out.println(" ");
}
System.out.println("======BY tolys====== ");
}
}
/** */ /**
* TestGroupBy
* @author linys
*
*/
public class TestGroupBy ... {
/** *//**
* @param args
*/
public static void main(String[] args) ...{
String[][] arr = ...{
...{ "1", "A", "N" },
...{ "2", "O", "B" },
...{ "3", "P", "A" }
};
// 缺省(按0列升序)
new GroupBy(arr);
printResult(arr);
// 按0列降序
new GroupBy(arr,0,-1);
printResult(arr);
}
public static void printResult(Object[][] arr) ...{
for (int i = 0; i < arr.length; i++) ...{
for (int j = 0; j < arr[i].length; j++) ...{
System.out.print(arr[i][j] + " ");
}
System.out.println(" ");
}
System.out.println("======BY tolys====== ");
}
}