# private int array[][] = new int[][] {
# { 12, 34, 68, 32, 9, 12, 545 },
# { 34, 72, 82, 57, 56, 0, 213 },
# { 12, 34, 68, 32, 21, 945, 23 },
# { 91, 10, 3, 2354, 73, 34, 18 },
# { 12, 83, 189, 26, 27, 98, 33 },
# { 47, 23, 889, 24, 899, 23, 657 },
# { 12, 34, 68, 343, 878, 235, 768 },
# { 12, 34, 98, 4, 56, 78, 12},
# { 26, 78, 2365, 78, 34, 256, 873 } };// 要排序的数组
实现对一个二维数组按指定的列集进行排序。要求实现类似sql中order by的功能,移动时,整行移动,不能打乱整行顺序。可将二维数组想象成数据库里的一个表记录集,
然后按指定的列集进行排序,即order by col1,col2。
这是在论坛中看到的一道笔试题,自己写了个又臭又长的code.看得自己都觉得不好意思了,深知自己java基础还很弱。
下面是一个网友的code.很简洁、明了。贴在下面了。
package test; import java.util.Arrays; import java.util.Comparator; public class ArraySort { public static void sort(int[][] ob, final int[] order) { Arrays.sort(ob, new Comparator<Object>() { public int compare(Object o1, Object o2) { int[] one = (int[]) o1; int[] two = (int[]) o2; for (int i = 0; i < order.length; i++) { int k = order[i]; if (one[k] > two[k]) { return 1; } else if (one[k] < two[k]) { return -1; } else { continue; //如果按一条件比较结果相等,就使用第二个条件进行比较。 } } return 0; } }); } public static void main(String[] args) { int array[][] = new int[][] { { 12, 34, 68, 32, 9, 12, 545 }, { 34, 72, 82, 57, 56, 0, 213 }, { 12, 34, 68, 32, 21, 945, 23 }, { 91, 10, 3, 2354, 73, 34, 18 }, { 12, 83, 189, 26, 27, 98, 33 }, { 47, 23, 889, 24, 899, 23, 657 }, { 12, 34, 68, 343, 878, 235, 768 }, { 12, 34, 98, 56, 78, 12, 546 }, { 26, 78, 2365, 78, 34, 256, 873 } }; sort(array, new int[] {0,1,3}); for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j]); System.out.print("\t"); } System.out.println(); } } }