java如何给列表排序
使用 Collections.sort() 方法
对于 List 接口的实现类(如 ArrayList、LinkedList),可以使用 Collections.sort() 方法进行排序。该方法会修改原始列表的顺序。
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(9);
Collections.sort(numbers); // 升序排序
System.out.println(numbers); // 输出 [2, 5, 9]
使用 List.sort() 方法
Java 8 及以上版本可以直接调用 List 的 sort() 方法,传入一个 Comparator。
List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(9);
numbers.sort(Comparator.naturalOrder()); // 升序排序
System.out.println(numbers); // 输出 [2, 5, 9]
numbers.sort(Comparator.reverseOrder()); // 降序排序
System.out.println(numbers); // 输出 [9, 5, 2]
自定义排序规则
如果需要根据对象的某个属性排序,可以通过自定义 Comparator 实现。
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 30));
people.add(new Person("Bob", 25));
people.add(new Person("Charlie", 35));
// 按年龄升序排序
people.sort(Comparator.comparingInt(p -> p.age));
System.out.println(people.get(0).name); // 输出 Bob
// 按年龄降序排序
people.sort((p1, p2) -> p2.age - p1.age);
System.out.println(people.get(0).name); // 输出 Charlie
使用 Stream.sorted() 方法
如果希望排序后生成一个新列表而不修改原列表,可以使用 Stream 的 sorted() 方法。
List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(9);
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.toList(); // Java 16+ 的 toList(),或使用 .collect(Collectors.toList())
System.out.println(sortedNumbers); // 输出 [2, 5, 9]
System.out.println(numbers); // 原列表不变,输出 [5, 2, 9]
对字符串列表排序
字符串列表的排序默认按字典序(字母顺序)排列。

List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
Collections.sort(names);
System.out.println(names); // 输出 [Alice, Bob, Charlie]
注意事项
- 对于自定义对象,需要实现
Comparable接口或提供Comparator。 - 排序的时间复杂度通常为 O(n log n),具体取决于排序算法(如
Collections.sort()使用归并排序)。






