在java中使用collections.sort简化排序,核心做法是传入一个lambda表达式作为comparator参数。通过指定目标对象的字段并调用comparator.comparing方法,可以大幅减少匿名内部类的样板代码。例如对user对象列表按age属性升序排列,只需一行代码即可完成。

Collections.sort如何接收Lambda参数
该方法直接接受一个实现了Comparator接口的函数式接口实例。Lambda表达式会自动匹配该接口的抽象方法compare,从而完成比较逻辑的定义。

import java.util.*;
public class Main {
public static void main(String[] args) {
List<user> users = new ArrayList();
users.add(new User("Alice", 30));
users.add(new User("Bob", 25));
Collections.sort(users, (u1, u2) -> Integer.compare(u1.getAge(), u2.getAge()));
System.out.println(users);
}
}
class User {
private String name;
private int age;
// 省略构造器和getter
}</user>
使用Comparator.comparing进一步简化
为了更简洁地提取字段进行比较,可以使用静态方法Comparator.comparing。它接受一个Function类型的参数来提取键值,自动处理比较逻辑。

import java.util.*;
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
List<user> users = new ArrayList();
users.add(new User("Alice", 30));
users.add(new User("Bob", 25));
Collections.sort(users, Comparator.comparing(User::getAge));
System.out.println(users);
}
}</user>
当age相同时如何处理排序稳定性
如果两个用户的age相同,默认情况下Collections.sort保持原有相对顺序(稳定排序)。若需打破平局,可链式调用thenComparing指定次要条件。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











