class ComplexComparator implements Comparator {
private final Comparator firstComparator;
private final Comparator secondComparator;
public ComplexComparator(Comparator firstComparator, Comparator secondComparator) {
this.firstComparator = firstComparator;
this.secondComparator = secondComparator;
我感觉你是自己写一个比较器,比较数据。如果非要lambda 的话,我勉强写一个示例,仅供参考,如果有问题,可以帮忙给个关注。
Java Lambda表达式重构后的代码,
Comparator<Object> complexComparator = (obj1, obj2) -> {
Comparator<Object> firstComparator = Comparator.nullsFirst((o1, o2) -> {
// 第一个比较逻辑在此处
});
Comparator<Object> secondComparator = Comparator.nullsFirst((o1, o2) -> {
// 第二个比较逻辑在此处
});
return firstComparator.compare(obj1, obj2) != 0 ? firstComparator.compare(obj1, obj2) : secondComparator.compare(obj1, obj2);
};
使用Java Lambda表达式创建了一个复杂的比较器。这个比较器接受两个参数,obj1和obj2,并返回一个int类型的值,表示它们的顺序。
使用了nullsFirst()方法,以确保在比较时不会出现NullPointerException。在这个比较器中, 使用第一个比较器进行比较。如果两个对象不相等, 返回它们的比较结果。否则, 使用第二个比较器进行比较,并返回它们的比较结果。
这里不涉及lambda,相反,你在 sort 一类的方法中,可以传入 lambda 代替Comparator