如何排序java
排序方法概述
Java中排序可以通过多种方式实现,包括内置方法、自定义比较器或手动实现算法。以下是常见的排序方法:
使用Arrays.sort()
对数组排序时,可直接调用Arrays.sort()方法。该方法对基本类型数组使用快速排序,对对象数组使用归并排序。
int[] numbers = {5, 2, 9, 1, 5};
Arrays.sort(numbers); // 升序排序
使用Collections.sort()
对List集合排序时,使用Collections.sort()方法。要求集合元素实现Comparable接口或传入自定义Comparator。
List<Integer> list = Arrays.asList(5, 2, 9, 1, 5);
Collections.sort(list); // 升序排序
自定义Comparator
通过实现Comparator接口实现自定义排序规则。例如按字符串长度排序:
List<String> words = Arrays.asList("apple", "banana", "cherry");
Collections.sort(words, (a, b) -> a.length() - b.length());
实现Comparable接口
若需对象支持自然排序,可让类实现Comparable接口并重写compareTo方法。
class Person implements Comparable<Person> {
String name;
int age;
@Override
public int compareTo(Person other) {
return this.age - other.age;
}
}
手动实现排序算法
如需手动实现,以下是快速排序的示例代码:

public static 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);
}
}
private static 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;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
注意事项
- 对象排序需确保
compareTo或compare方法满足自反性、对称性和传递性。 - 大规模数据排序时,优先选择时间复杂度为O(n log n)的算法(如归并排序、快速排序)。
- Java 8+可使用
Stream.sorted()进行链式排序操作。






