📌  相关文章
📜  根据Java中任何给定列中的值对二维数组进行排序(1)

📅  最后修改于: 2023-12-03 15:40:27.832000             🧑  作者: Mango

根据Java中任何给定列中的值对二维数组进行排序

在Java中,可以使用Arrays类的sort()方法对一维数组进行排序。但如果需要对二维数组中的某一列进行排序,则需要使用Comparator接口和Arrays类的sort()方法结合使用。

以下代码演示了如何根据二维数组中的第一列进行排序:

import java.util.Arrays;
import java.util.Comparator;

public class ArraySortDemo {
  
  public static void main(String[] args) {
    int[][] arr = {
      {3, 1},
      {1, 2},
      {2, 3},
      {4, 4},
      {5, 5}
    };
    
    Arrays.sort(arr, new Comparator<int[]>() {
      @Override
      public int compare(int[] o1, int[] o2) {
        return o1[0] - o2[0];
      }
    });
    
    for(int i = 0; i < arr.length; i++) {
      System.out.println(arr[i][0] + " " + arr[i][1]);
    }
  }
}

代码说明:

  1. 定义一个二维数组arr
  2. 使用Arrays类的sort()方法对arr进行排序,排序规则由Comparator接口的实现类指定。在本例中,Comparator接口的实现类使用匿名内部类的方式创建,重写compare()方法,该方法比较两个一维数组的第一位值,返回值为正数时表示o1大于o2,返回值为负数时表示o1小于o2,返回值为0时表示o1等于o2
  3. 使用for循环输出排序后的数组。

如果要根据二维数组中的其他列进行排序,只需修改compare()方法中的比较规则即可。例如,以下代码演示了如何根据二维数组中的第二列进行排序:

import java.util.Arrays;
import java.util.Comparator;

public class ArraySortDemo {
  
  public static void main(String[] args) {
    int[][] arr = {
      {3, 1},
      {1, 2},
      {2, 3},
      {4, 4},
      {5, 5}
    };
    
    Arrays.sort(arr, new Comparator<int[]>() {
      @Override
      public int compare(int[] o1, int[] o2) {
        return o1[1] - o2[1];
      }
    });
    
    for(int i = 0; i < arr.length; i++) {
      System.out.println(arr[i][0] + " " + arr[i][1]);
    }
  }
}

代码中的compare()方法改为比较两个一维数组的第二位值。

使用Arrays类的sort()方法配合Comparator接口可以方便地对二维数组中的任意一列进行排序。