Java二维数组排序的简单实现

文章目录

      • 方法一:重写Arrays.sort方法
      • 方法二:简化版重写Arrays.sort方法

方法一:重写Arrays.sort方法

待排序的数组形式int[][] array = new int[n][2],其中n为任意整数。排序逻辑为:按第一列升序排列;若第一列数字相等,按第二列升序排列。

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

public class Sort {
    public static int[][] mySort(int[][] array){
    	// 新建一个比较器Comparator作为匿名内部类
        Arrays.sort(array, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[0] == o2[0]){
                	// 若俩数组的第一个元素相等,则比较它们的第二个元素
                    return o1[1] - o2[1];
                }else {
                	// 若俩数组的第一个元素不相等,则按从小到大的顺序排列
                    return o1[0] - o2[0];
                }
            }
        });
        return array;
    }
    public static void main(String[] args){
    	// 输入测试数据
        int[][] arr = new int[][]{{1,3},{2,4}, {2,6},{8,10},{8,18}, {15,18}};
        int[][] sorted = mySort(arr);
        // 输出测试结果
        for(int[] a : sorted){
            System.out.println(a[0] + "," + a[1]);
        }
    }
}

方法二:简化版重写Arrays.sort方法

import java.util.Arrays;

public class Sort {
    public static int[][] mySort(int[][] array){
        Arrays.sort(array, (arr1, arr2) -> arr1[0] == arr2[0] ? arr1[1] - arr2[1] : arr1[0] - arr2[0]);
        return array;
    }
    public static void main(String[] args){
        int[][] arr = new int[][]{{1,3},{2,4}, {2,6},{8,10},{8,18}, {15,18}};
        int[][] sorted = mySort(arr);
        for(int[] a : sorted){
            System.out.println(a[0] + "," + a[1]);
        }
    }
}

排序结果

1,3
2,4
2,6
8,10
8,18
15,18

你可能感兴趣的:(Java编程技巧)