Arrays.sort()默认升序排序,对基本类型和Comparable对象直接调用即可,原地修改数组;自定义对象需实现Comparable或传入Comparator;不支持二维数组整体排序,仅作用于一维数组。

Java 中使用 Arrays.sort() 对数组升序排序非常简单,它默认就是升序排列,无需额外参数。
基本用法:对基本类型数组排序
对于 int[]、double[]、char[] 等基本类型数组,直接传入数组即可:
int[] arr = {5, 2, 8, 1};Arrays.sort(arr); // 排序后 arr 变为 {1, 2, 5, 8}
该方法是原地排序(in-place),会直接修改原数组,不返回新数组。
对引用类型数组排序(如 String[])
对于实现了 Comparable 接口的类(如 String、Integer、Double),同样直接调用:
立即学习“Java免费学习笔记(深入)”;
String[] words = {"banana", "apple", "cherry"};Arrays.sort(words); // 按字典序升序:{"apple", "banana", "cherry"}
注意:元素不能为 null,否则运行时抛出 NullPointerException。
对自定义对象数组排序
若要排序自定义类(如 Person[]),需让该类实现 Comparable 接口并重写 compareTo() 方法:
- 例如按年龄升序:
public int compareTo(Person p) { return Integer.compare(this.age, p.age); } - 然后调用
Arrays.sort(persons);
或者不改类定义,用 Comparator 临时指定规则:
Arrays.sort(persons, Comparator.comparing(p -> p.age));
注意事项
Arrays.sort() 不适用于二维数组整体排序;它只对一维数组生效。若想按某列排序二维数组(如 int[][]),需配合 Comparator 使用:
Arrays.sort(matrix, (a, b) -> Integer.compare(a[0], b[0])); // 按首列升序
另外,排序算法在 JDK 7+ 中对基本类型使用双轴快排(Dual-Pivot Quicksort),对引用类型使用 TimSort,稳定且高效。


















