实现二维数组排序

时间:2025-02-21 10:29:23

一、概述

()是类中的一个静态方法,可以对数组进行排序,但是仅支持对一维数组进行排序,如果需要对二维数组进行排序,需要重写sort()方法中的Comparator比较器。

 

二、案例代码

方式一:

public static void main(String[] args) {
        int[][] points = {{10, 16}, {2, 8}, {1, 6}, {6, 12}};
        // 对二维数组按照每行数组的第一个元素进行排序
        (points, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                // 按照从小到大排序
                return o1[0] - o2[0];
            }
        });

        for (int[] point : points) {
            for (int i : point) {
                (i + " ");
            }
            ();
        }
    }

方式二:使用Lambda表达式的方式对Comparator比较器进行简写(JDK1.8+)

public static void main(String[] args) {
        int[][] points = {{10, 16}, {2, 8}, {1, 6}, {6, 12}};
        // 对二维数组按照每行数组的第一个元素进行排序
        (points, (o1, o2) -> {
            // 按照从小到大排序
            return o1[0] - o2[0];
        });

        for (int[] point : points) {
            for (int i : point) {
                (i + " ");
            }
            ();
        }
    }

方式三:使用()方法

static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor)

该方法接收一个函数作为参数,从类型T中提取一个int类型的排序键,并返回一个与该排序键进行比较的Comparator。

public static void main(String[] args) {
        int[][] points = {{10, 16}, {2, 8}, {1, 6}, {6, 12}};
        // 对二维数组按照每行数组的第一个元素进行排序
        (points, (o -> o[0]));
        for (int[] point : points) {
            for (int i : point) {
                (i + " ");
            }
            ();
        }
    }

三、代码截图

1 6 
2 8 
6 12 
10 16