/** */
/** *排序辅助类TwoDimArrayComparator **/
import
java.util.Comparator;
public
class
TwoDimArrayComparator
implements
Comparator
...
{ private int keyColumn = 0 ; private int sortOrder = 1 ; public TwoDimArrayComparator () ... {} public TwoDimArrayComparator ( int keyColumn) ... { this .keyColumn = keyColumn; } public TwoDimArrayComparator ( int keyColumn, int sortOrder) ... { this .keyColumn = keyColumn; this .sortOrder = sortOrder; } public int compare(Object a, Object b) ... { if (a instanceof String[]) ... { return sortOrder * ((String[])a)[keyColumn].compareTo(((String[])b)[keyColumn]); } else if (a instanceof int []) ... { return sortOrder * ((( int [])a)[keyColumn] - (( int [])b)[keyColumn]); } else ... { return 0 ; } } }
/** */
/** *测试类 **/
import
java.util.Arrays;
public
class
Test
...
{ @SuppressWarnings( " unchecked " ) public void test() ... { String [][] s1 = ... { ... { " 张三 " , " 语文 " , " 80 " } , ... { " 李四 " , " 语文 " , " 80 " } , ... { " 王五 " , " 语文 " , " 80 " } , ... { " 张三 " , " 数学 " , " 80 " } , ... { " 李四 " , " 数学 " , " 80 " } }; Arrays.sort(s1, new TwoDimArrayComparator()); printArray(s1); } // 打印二维数组方法 public static void printArray(String[][] 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(" ====================== " ); } public static void main(String[] args) ... { new Test().test(); } }
运行结果:
张三 数学 80 李四 语文 80 李四 数学 80 王五 语文 80 ======================