Java 二维数组按指定列排序(一)

末蓝、 2023-06-19 12:30 45阅读 0赞

Java 二维数组按指定列排序(一)

简介:
在做项目时,需要对一个二维数组,按照指定的列进行排序。

Java 二维数组按指定列排序(二)升序 or 降序

效果图:
在这里插入图片描述
代码实现:

  1. public static void main(String[] args) {
  2. int[][] nums = initialArray(5, 3);
  3. System.out.println("排序前:");
  4. printArr(nums);
  5. System.out.println("排序后:");
  6. // 先根据第1列比较,若相同则再比较第0列
  7. sortByColumn(nums, new int[] {1, 0});
  8. printArr(nums);
  9. }
  10. /**
  11. * 打印二维数组
  12. * @param nums 数组
  13. */
  14. private static void printArr(int[][] nums) {
  15. for (int i = 0; i < nums.length; i++) {
  16. System.out.println(Arrays.toString(nums[i]));
  17. }
  18. }
  19. /**
  20. * 构造一个row * col的二维数组
  21. * @param row 二维数组的行数
  22. * @param col 二维数组的列数
  23. * @return 构造的二维数组
  24. */
  25. private static int[][] initialArray(int row, int col) {
  26. int[][] arr = new int[row][col];
  27. for (int i = 0; i < row; i++) {
  28. for (int j = 0; j < col; j++) {
  29. // 0-100的随机数
  30. arr[i][j] = (int) (Math.random() * 100);
  31. }
  32. }
  33. return arr;
  34. }
  35. /**
  36. * 按列排序
  37. * @param ob 待排序的数组
  38. * @param order 列排序的优先级, 如:new int{1, 2} 先根据第一列比较,若相同则再比较第二列
  39. */
  40. private static void sortByColumn(int[][] ob, final int[] order) {
  41. Arrays.sort(ob, new Comparator<Object>() {
  42. public int compare(Object o1, Object o2) {
  43. int[] one = (int[]) o1;
  44. int[] two = (int[]) o2;
  45. for (int i = 0; i < order.length; i++) {
  46. int k = order[i];
  47. if (one[k] > two[k]) {
  48. return 1;
  49. } else if (one[k] < two[k]) {
  50. return -1;
  51. } else {
  52. continue;
  53. }
  54. }
  55. return 0;
  56. }
  57. });
  58. }

发表评论

表情:
评论列表 (有 0 条评论,45人围观)

还没有评论,来说两句吧...

相关阅读