欢迎访问宙启技术站
智能推送

Java中Arrays类的sort函数的用法

发布时间:2023-06-16 21:25:53

Java中的Arrays类提供了许多有用的方法,其中排名最靠前的是sort()函数。该函数是一个静态函数,用来对数组进行排序。sort()方法需要传入一个待排序的数组作为参数,并且支持对不同类型的数组进行排序。本文将详细介绍Java中Arrays类的sort函数的用法。

一、函数定义

Arrays类的sort()方法有以下两种形式:

public static void sort(byte[] a)

public static void sort(byte[] a, int fromIndex, int toIndex)

public static void sort(char[] a)

public static void sort(char[] a, int fromIndex, int toIndex)

public static void sort(double[] a)

public static void sort(double[] a, int fromIndex, int toIndex)

public static void sort(float[] a)

public static void sort(float[] a, int fromIndex, int toIndex)

public static void sort(int[] a)

public static void sort(int[] a, int fromIndex, int toIndex)

public static void sort(long[] a)

public static void sort(long[] a, int fromIndex, int toIndex)

public static void sort(Object[] a)

public static void sort(Object[] a, Comparator c)

public static void sort(Object[] a, int fromIndex, int toIndex)

public static void sort(Object[] a, int fromIndex, int toIndex, Comparator c)

public static void sort(short[] a)

public static void sort(short[] a, int fromIndex, int toIndex)

二、函数使用

2.1 sort()函数的默认升序排序

默认情况下,sort()函数按升序排序。比如对一个int类型的数组进行排序:

int[] arr = {5,2,1,9,3};

Arrays.sort(arr);

System.out.println(Arrays.toString(arr));

输出结果为:

[1, 2, 3, 5, 9]

可以看到,原数组被升序排序了。

2.2 sort()函数实现自定义排序

sort()函数还支持自定义排序逻辑。比如对一个String类型的数组按照字符串长度进行排序:

String[] arr = {"cat", "apple", "dog", "banana"};

Arrays.sort(arr, (a, b) -> a.length() - b.length());

System.out.println(Arrays.toString(arr));

输出结果为:

[cat, dog, apple, banana]

可以看到,原数组按照字符串长度从短到长排序了。

2.3 sort()函数使用起始索引和结束索引排序

sort()函数还支持指定起始索引和结束索引进行排序。比如对一个int类型的数组从索引2开始,到索引4结束进行排序:

int[] arr = {5,2,1,9,3};

Arrays.sort(arr, 2, 5);

System.out.println(Arrays.toString(arr));

输出结果为:

[5, 2, 1, 3, 9]

可以看到,原数组从索引2到4位置的元素被升序排序了。

2.4 sort()函数使用降序排序

sort()函数默认按升序排序,如果需要进行降序排序,可以借助Collections.reverseOrder()方法来实现。比如对一个Integer类型的数组按降序排序:

Integer[] arr = {5,2,1,9,3};

Arrays.sort(arr, Collections.reverseOrder());

System.out.println(Arrays.toString(arr));

输出结果为:

[9, 5, 3, 2, 1]

可以看到,原数组按照降序排列了。

2.5 sort()函数使用自定义比较器排序

通过自定义比较器,可以更加灵活地实现排序。比如对一个Student类型的数组按照学生年龄从小到大排序:

class Student {

    private String name;

    private int age;

    public Student(String name, int age) {

        this.name = name;

        this.age = age;

    }

    public int getAge() {

        return this.age;

    }

    @Override

    public String toString() {

        return this.name + ":" + this.age;

    }

}

Student[] arr = {new Student("Tom", 18), new Student("Mike", 20), new Student("Lucy", 16)};

Arrays.sort(arr, Comparator.comparing(Student::getAge));

System.out.println(Arrays.toString(arr));

输出结果为:

[Lucy:16, Tom:18, Mike:20]

可以看到,原数组按照学生年龄从小到大排序了。

三、总结

Arrays类的sort()函数支持对不同类型的数组进行排序,可以进行默认升序排序、自定义排序、指定起始索引结束索引排序、降序排序和自定义比较器排序等操作。对于Java开发者来说,sort()函数是一个非常常用的工具函数,可以大大提高开发效率。