java中集合如何排序
使用Collections.sort方法排序List
对实现了List接口的集合(如ArrayList、LinkedList)排序,可直接调用Collections.sort()方法。默认按自然顺序(如数字升序、字符串字典序)排序。
List<Integer> numbers = Arrays.asList(5, 3, 9, 1);
Collections.sort(numbers); // 升序排序:[1, 3, 5, 9]
若需自定义排序规则,传入Comparator:
Collections.sort(numbers, (a, b) -> b - a); // 降序排序:[9, 5, 3, 1]
使用List.sort方法
Java 8+的List接口直接提供sort()方法,功能与Collections.sort()类似:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.sort(Comparator.naturalOrder()); // 字典序排序
names.sort(Comparator.reverseOrder()); // 逆字典序
自定义Comparator排序
通过实现Comparator接口定义复杂排序逻辑。例如按对象属性排序:
class Person {
String name;
int age;
// 构造方法、getter省略
}
List<Person> people = Arrays.asList(new Person("Bob", 25), new Person("Alice", 30));
people.sort(Comparator.comparingInt(Person::getAge)); // 按年龄升序
people.sort(Comparator.comparing(Person::getName).reversed()); // 按名字降序
使用TreeSet自动排序
TreeSet在插入元素时自动按自然顺序或指定Comparator排序:

Set<Integer> sortedSet = new TreeSet<>((a, b) -> b - a);
sortedSet.add(3);
sortedSet.add(1); // 自动保持降序:[3, 1]
数组排序
对数组使用Arrays.sort()方法:
int[] arr = {4, 2, 7};
Arrays.sort(arr); // 升序排序:[2, 4, 7]
String[] strs = {"banana", "apple"};
Arrays.sort(strs, String.CASE_INSENSITIVE_ORDER); // 忽略大小写排序
并行排序
Java 8+支持并行排序大数据集(parallelSort):
int[] largeArray = new int[100000];
Arrays.parallelSort(largeArray); // 利用多线程加速
注意事项
- 确保排序对象实现
Comparable接口(自然排序),或提供Comparator(自定义排序)。 - 对
HashSet等无序集合需先转换为List或TreeSet再排序。 - 复杂对象排序可链式调用
Comparator(如thenComparing)。






