Java 二维数组按指定列排序
程序员文章站
2022-05-26 23:53:15
...
Java 二维数组按指定列排序
简介:
在做项目时,需要对一个二维数组,按照指定的列进行排序。
效果图:
代码实现:
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;
}
});
}
上一篇: 如何测量程序运行时间?
推荐阅读
-
java二维数组指定不同长度实例方法
-
php实现数组按指定KEY排序的方法
-
Python3实现对列表按元组指定列进行排序的方法分析
-
妙用Angularjs实现表格按指定列排序
-
php中多维数组按指定value排序的实现代码
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
-
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数