参考链接: Java中的final数组 | Final arrays
Java 二维数组按指定列排序(一)
简介: 在做项目时,需要对一个二维数组,按照指定的列进行排序。
Java 二维数组按指定列排序(二)升序 or 降序
效果图: 代码实现:
public static void main(String[] args) {
int[][] nums = initialArray(5, 3);
System.out.println("排序前:");
printArr(nums);
System.out.println("排序后:");
// 先根据第1列比较,若相同则再比较第0列
sortByColumn(nums, new int[] {1, 0});
printArr(nums);
}
/**
* 打印二维数组
* @param nums 数组
*/
private static void printArr(int[][] nums) {
for (int i = 0; i < nums.length; i++) {
System.out.println(Arrays.toString(nums[i]));
}
}
/**
* 构造一个row * col的二维数组
* @param row 二维数组的行数
* @param col 二维数组的列数
* @return 构造的二维数组
*/
private static int[][] initialArray(int row, int col) {
int[][] arr = new int[row][col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
// 0-100的随机数
arr[i][j] = (int) (Math.random() * 100);
}
}
return arr;
}
/**
* 按列排序
* @param ob 待排序的数组
* @param order 列排序的优先级, 如:new int{1, 2} 先根据第一列比较,若相同则再比较第二列
*/
private static void sortByColumn(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;
}
});
}
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。