java 如何排序
排序方法概述
Java提供了多种排序方式,包括内置排序方法、自定义排序以及使用第三方库。以下是常见实现方式:
使用Arrays.sort()对数组排序
适用于基本类型数组和对象数组。对于基本类型,默认采用快速排序;对于对象数组,使用归并排序。
int[] numbers = {5, 2, 9, 1, 5};
Arrays.sort(numbers); // 升序排序
Arrays.sort(numbers, 1, 4); // 对子数组排序(范围左闭右开)
对于对象数组(如String):
String[] names = {"Alice", "Bob", "Charlie"};
Arrays.sort(names); // 按字典序升序
使用Collections.sort()对列表排序
适用于List集合(如ArrayList):

List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 4));
Collections.sort(list); // 升序排序
自定义排序规则通过Comparator:
Collections.sort(list, (a, b) -> b - a); // 降序排序
自定义排序规则
通过实现Comparator接口或使用Lambda表达式定义排序逻辑:

List<String> words = Arrays.asList("apple", "banana", "cherry");
words.sort((s1, s2) -> s1.length() - s2.length()); // 按字符串长度升序
对复杂对象排序示例:
class Person {
String name;
int age;
// 构造方法、getter等
}
List<Person> people = new ArrayList<>();
people.sort(Comparator.comparingInt(Person::getAge)); // 按年龄升序
people.sort(Comparator.comparing(Person::getName).reversed()); // 按姓名降序
Java 8+的Stream API排序
通过Stream实现链式操作:
List<Integer> sortedList = list.stream()
.sorted() // 自然排序
.collect(Collectors.toList());
List<String> reverseSorted = words.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
第三方库排序(如Guava)
使用Guava的Ordering类:
Ordering<Comparable> ordering = Ordering.natural().reverse();
List<Integer> sorted = ordering.sortedCopy(list);
注意事项
- 对象类需实现
Comparable接口以支持自然排序。 - 多字段排序可通过
Comparator.thenComparing()链式调用实现。 - 并发环境下考虑使用并行流(
.parallelStream()),但需评估数据规模。
以上方法覆盖了大多数排序场景,根据需求选择合适的方式即可。






