java数组如何排序
使用Arrays.sort()方法
Java提供了Arrays.sort()方法,可以对数组进行排序。该方法支持对基本类型数组和对象数组进行排序。
基本类型数组排序
int[] numbers = {5, 2, 9, 1, 5};
Arrays.sort(numbers); // 升序排序
System.out.println(Arrays.toString(numbers)); // 输出:[1, 2, 5, 5, 9]
对象数组排序
对象数组需要实现Comparable接口或传入自定义的Comparator。
String[] names = {"Alice", "Bob", "Charlie"};
Arrays.sort(names); // 按字典序升序排序
System.out.println(Arrays.toString(names)); // 输出:[Alice, Bob, Charlie]
降序排序
可以使用Collections.reverseOrder()或自定义Comparator。
Integer[] numbers = {5, 2, 9, 1, 5};
Arrays.sort(numbers, Collections.reverseOrder()); // 降序排序
System.out.println(Arrays.toString(numbers)); // 输出:[9, 5, 5, 2, 1]
自定义Comparator排序
对于复杂对象或特殊排序需求,可以传入自定义Comparator。
按字符串长度排序
String[] names = {"Alice", "Bob", "Charlie"};
Arrays.sort(names, (a, b) -> a.length() - b.length()); // 按长度升序
System.out.println(Arrays.toString(names)); // 输出:[Bob, Alice, Charlie]
按对象属性排序
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Person[] people = {
new Person("Alice", 25),
new Person("Bob", 20),
new Person("Charlie", 30)
};
Arrays.sort(people, (a, b) -> a.age - b.age); // 按年龄升序
for (Person p : people) {
System.out.println(p.name + ": " + p.age);
}
// 输出:
// Bob: 20
// Alice: 25
// Charlie: 30
并行排序
对于大型数组,可以使用Arrays.parallelSort()提高性能。
int[] largeArray = new int[1000000];
// 填充数组...
Arrays.parallelSort(largeArray); // 并行排序
部分数组排序
可以指定排序的范围,仅对数组的一部分进行排序。
int[] numbers = {5, 2, 9, 1, 5, 8};
Arrays.sort(numbers, 1, 4); // 对索引1到3(不包括4)排序
System.out.println(Arrays.toString(numbers)); // 输出:[5, 1, 2, 9, 5, 8]
注意事项
- 基本类型数组(如
int[]、double[])默认按升序排序。 - 对象数组需要实现
Comparable或传入Comparator。 Arrays.sort()使用双轴快速排序(基本类型)或TimSort(对象类型)。- 并行排序适合大数据量,但小数组可能性能不如普通排序。







