java数组如何排序
使用Arrays.sort()方法
Java提供了Arrays.sort()方法,可以对数组进行排序。该方法适用于基本数据类型和对象数组。
对于基本数据类型数组(如int、double等):
int[] numbers = {5, 3, 9, 1, 7};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers)); // 输出:[1, 3, 5, 7, 9]
对于对象数组(如String、自定义对象等):
String[] names = {"John", "Alice", "Bob", "Eve"};
Arrays.sort(names);
System.out.println(Arrays.toString(names)); // 输出:[Alice, Bob, Eve, John]
自定义排序规则
如果需要自定义排序规则,可以实现Comparator接口并传递给Arrays.sort()方法。
对字符串数组按长度排序:
String[] words = {"apple", "banana", "pear", "kiwi"};
Arrays.sort(words, (a, b) -> a.length() - b.length());
System.out.println(Arrays.toString(words)); // 输出:[pear, kiwi, apple, banana]
对自定义对象数组排序:
class Person {
String name;
int age;
// 构造方法和其他代码省略
}
Person[] people = {new Person("John", 25), new Person("Alice", 20)};
Arrays.sort(people, (p1, p2) -> p1.age - p2.age);
并行排序
对于大型数组,可以使用Arrays.parallelSort()方法进行并行排序,提高性能:
int[] largeArray = new int[1000000];
// 填充数组...
Arrays.parallelSort(largeArray);
部分数组排序
可以只对数组的一部分进行排序:
int[] numbers = {5, 3, 9, 1, 7, 2, 8};
Arrays.sort(numbers, 1, 5); // 只排序索引1到4(不包括5)的元素
System.out.println(Arrays.toString(numbers)); // 输出:[5, 1, 3, 7, 9, 2, 8]
降序排序
要实现降序排序,可以使用Collections.reverseOrder()或自定义比较器:
Integer[] numbers = {5, 3, 9, 1, 7}; // 必须使用Integer而非int
Arrays.sort(numbers, Collections.reverseOrder());
System.out.println(Arrays.toString(numbers)); // 输出:[9, 7, 5, 3, 1]
或者使用自定义比较器:
int[] numbers = {5, 3, 9, 1, 7};
numbers = Arrays.stream(numbers)
.boxed()
.sorted(Comparator.reverseOrder())
.mapToInt(Integer::intValue)
.toArray();






