Java中Arrays类的sort函数的用法
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()函数是一个非常常用的工具函数,可以大大提高开发效率。
