java 如何排序
排序方法概述
Java提供了多种排序方式,适用于不同场景和数据类型。常见方法包括使用内置工具类、自定义排序规则以及实现特定算法。
使用Arrays.sort()排序数组
对于基本类型数组和对象数组,java.util.Arrays类提供了静态方法sort()。基本类型数组按数值升序排列,对象数组默认按自然顺序排序(需实现Comparable接口)。

int[] intArray = {5, 2, 9, 1, 5};
Arrays.sort(intArray); // 排序后: [1, 2, 5, 5, 9]
String[] strArray = {"Banana", "Apple", "Orange"};
Arrays.sort(strArray); // 排序后: ["Apple", "Banana", "Orange"]
使用Collections.sort()排序列表
对List集合排序可使用java.util.Collections.sort()方法。默认按自然顺序排序,或通过Comparator自定义规则。
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5);
Collections.sort(numbers); // 排序后: [1, 1, 3, 4, 5]
List<String> words = Arrays.asList("cat", "dog", "bird");
Collections.sort(words, (a, b) -> a.length() - b.length()); // 按字符串长度排序
自定义Comparator实现复杂排序
通过实现Comparator接口,可定义灵活的比较逻辑。例如对对象按多字段排序:

class Person {
String name;
int age;
// 构造方法和getter省略
}
List<Person> people = Arrays.asList(
new Person("Alice", 30),
new Person("Bob", 25)
);
Collections.sort(people, Comparator
.comparing(Person::getAge)
.thenComparing(Person::getName));
使用Stream API排序
Java 8+的Stream API支持链式操作和函数式排序:
List<String> fruits = Arrays.asList("Pear", "Apple", "Melon");
List<String> sortedFruits = fruits.stream()
.sorted() // 自然排序
.collect(Collectors.toList());
List<Integer> nums = Arrays.asList(3, 1, 4);
List<Integer> descNums = nums.stream()
.sorted(Comparator.reverseOrder()) // 降序排序
.collect(Collectors.toList());
实现自定义排序算法
如需特定算法(如快速排序、归并排序),可手动实现:
void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quickSort(arr, low, pivot - 1);
quickSort(arr, pivot + 1, high);
}
}
int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high);
return i + 1;
}






