JAVA——Arrays.sort()详解

简介

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

实例

对一维数组排序

常规

从小到大排序。

Arrays.sort(int [] a)

特定范围

Arrays.sort(int[] a, int fromIndex, int toIndex)

[fromIndex,toIndex)区间升序。

public static void main(String[] args) {
        int[] points = {5,2,4,6,3,1};
        Arrays.sort(points, 1,5);
        System.out.println(Arrays.toString(points));
    }
    // [5,2,3,4,6,1]

降序

要实现降序排序,必须使用引用类型数组,不能使用基本类型数组!

public static void main(String[] args) {
        Integer[] points = {5,2,4,6,3,1};
        Arrays.sort(points, Collections.reverseOrder());
        System.out.println(Arrays.toString(points));
    }
    // [6, 5, 4, 3, 2, 1]

自定义排序

自定义排序方法需要实现java.util.Comparetor接口中的compare方法。

public static void main(String[] args) {
        Integer[] points = {5,2,4,6,3,1};
        Arrays.sort(points, (o1, o2) -> o2 - o1);
        System.out.println(Arrays.toString(points));
    }
// [6, 5, 4, 3, 2, 1]

对二维数组排序

按第一列升

public static void main(String[] args) {
        int[][] points = {{10, 16}, {2, 8}, {1, 20}, {6, 12}};
        // 对二维数组按照每行数组的第一个元素进行排序
        Arrays.sort(points, (o1, o2) -> o1[0] - o2[0]);
        for (int[] point : points) {
            System.out.println(Arrays.toString(point));
        }
    }

按第一列降

Arrays.sort(points, (o1, o2) -> o2[0] - o1[0]);

按第二列升

Arrays.sort(points, (o1, o2) -> o1[1] - o2[1]);

按第二列降

Arrays.sort(points, (o1, o2) -> o2[1] - o1[1]);

按第一列降,第二列升

Arrays.sort(points, (x, y) -> {
            if (y[1] > x[1]) return 1;
            else if (y[1] < x[1]) return -1;
            else {
                return Integer.compare(x[0], y[0]);
            }
        });
posted @ 2022-09-15 19:33  岸南  阅读(822)  评论(0)    收藏  举报