我们在学习《数据结构》时,一定学习过数据排序算法相关的算法,例如:冒泡排序、选择法排序、插入排序、快速排序等等。
在 JDK 的 java.util.Arrays 工具类中,提供了 sort() 方法对数组排序。方法声明如下:
public static void sort(byte[] a) 对指定的 byte 型数组按数字升序进行排序。
public static void sort(byte[] a, int fromIndex, int toIndex) 对指定 byte 型数组的指定范围按数字升序进行排序。
public static void sort(char[] a) 对指定的 char 型数组按数字升序进行排序。
public static void sort(char[] a, int fromIndex, int toIndex) 对指定 char 型数组的指定范围按数字升序进行排序。
public static void sort(double[] a) 对指定的 double 型数组按数字升序进行排序。
public static void sort(double[] a, int fromIndex, int toIndex) 对指定 double 型数组的指定范围按数字升序进行排序。
public static void sort(float[] a) 对指定的 float 型数组按数字升序进行排序。
public static void sort(float[] a, int fromIndex, int toIndex) 对指定 float 型数组的指定范围按数字升序进行排序。
public static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。
public static void sort(int[] a, int fromIndex, int toIndex) 对指定 int 型数组的指定范围按数字升序进行排序。
public static void sort(long[] a) 对指定的 long 型数组按数字升序进行排序。
public static void sort(long[] a, int fromIndex, int toIndex) 对指定 long 型数组的指定范围按数字升序进行排序。
public static void sort(Object[] a) 根据元素的自然顺序对指定对象数组按升序进行排序。
public static void sort(Object[] a, int fromIndex, int toIndex) 根据元素的自然顺序对指定对象数组的指定范围按升序进行排序。
public static void sort(short[] a) 对指定的 short 型数组按数字升序进行排序。
public static void sort(short[] a, int fromIndex, int toIndex) 对指定 short 型数组的指定范围按数字升序进行排序。
public static <T> void sort(T[] a, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组进行排序。
public static <T> void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c) 根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。
使用 Arrays.sort() 方法对 int 数组进行升序排序,代码如下:
import java.util.Arrays; public class Demo { public static void main(String[] args) { int[] array = { 1, 20, 17, 15, 33, 22, 14, 16, 18 }; // 对 array 数组进行升序排序 Arrays.sort(array); // 输出排序后的数组 System.out.println(Arrays.toString(array)); } }
运行示例,输出如下:
[1, 14, 15, 16, 17, 18, 20, 22, 33]
自定义 Arrays.sort() 方法的排序规则,实现将 int 数组降序排列。代码如下:
import java.util.Arrays; import java.util.Comparator; public class Demo { public static void main(String[] args) { Integer[] array = { 1, 20, 17, 15, 33, 22, 14, 16, 18 }; // 对 array 数组递减排序 // 这里涉及到了匿名内部类、接口相关知识,后续章节逐一介绍 Arrays.sort(array, new Comparator<Integer>(){ @Override public int compare(Integer o1, Integer o2) { return o2 - o1; } }); // 输出排序后的数组 System.out.println(Arrays.toString(array)); } }
上面示例代码中,在 Arrays.sort() 方法的第二个参数中传递了一个实现了 java.util.Comparator 接口的内部类,使用该内部类自定义 Arrays.sort() 的排序方式,实现数组递减排序(接口、内部类相关知识将在后续章节逐一展开)。运行示例,输出如下:
[33, 22, 20, 18, 17, 16, 15, 14, 1]