java如何对list排序
使用Collections.sort方法
对于实现了Comparable接口的对象列表,可以直接使用Collections.sort()方法进行自然排序。例如对String或Integer列表排序:
List<String> names = Arrays.asList("John", "Alice", "Bob");
Collections.sort(names); // 自然排序:["Alice", "Bob", "John"]
自定义Comparator排序
当需要自定义排序规则或对象未实现Comparable时,可以传入Comparator:

List<Integer> numbers = Arrays.asList(3, 1, 4);
Collections.sort(numbers, (a, b) -> b - a); // 降序排序:[4, 3, 1]
使用List的sort方法
Java 8+可以直接调用List的sort()方法,语法更简洁:
List<String> fruits = new ArrayList<>(Arrays.asList("Orange", "Apple"));
fruits.sort(Comparator.naturalOrder()); // 自然排序:["Apple", "Orange"]
对象属性排序
通过Comparator对对象属性排序,例如按用户年龄排序:

class User {
String name;
int age;
// 构造方法/getters省略
}
List<User> users = Arrays.asList(new User("Tom", 25), new User("Amy", 20));
users.sort(Comparator.comparingInt(User::getAge)); // 按年龄升序
多条件排序
使用thenComparing()实现多级排序,例如先按年龄再按姓名:
users.sort(Comparator.comparing(User::getAge)
.thenComparing(User::getName));
流式排序
通过Stream API进行排序,不影响原列表:
List<String> sorted = names.stream()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
注意事项
- 对
Arrays.asList()返回的列表排序会修改底层数组 - 对不可变列表(如
List.of()创建)排序会抛出UnsupportedOperationException - 复杂对象建议实现
Comparable接口或使用Comparator






