.sorted(Comparator.comparing(ModeValue::getValue, Comparator.nullsLast(Comparator.reverseOrder()))) 排序 失效
时间: 2023-11-14 19:10:05 浏览: 143
可能是因为 ModeValue 类没有实现 Comparable 接口,或者 Comparator.comparing() 方法中的比较器逻辑有误。请检查一下 ModeValue 类的定义和 Comparator 的使用。
如果 ModeValue 类没有实现 Comparable 接口,可以尝试在 Comparator.comparing() 方法中传入一个实现了 Comparator 接口的比较器对象,例如:
.sorted(Comparator.comparing(ModeValue::getValue, Comparator.nullsLast(Comparator.reverseOrder())))
改为:
.sorted(Comparator.comparing(ModeValue::getValue, Comparator.nullsLast((o1, o2) -> {
if (o1 == null && o2 == null) {
return 0;
}
if (o1 == null) {
return 1;
}
if (o2 == null) {
return -1;
}
return o2.compareTo(o1);
})))
其中,Lambda 表达式中的比较器逻辑是:如果 o1 和 o2 都为 null,则返回 0;如果 o1 为 null,则 o2 大于 o1,返回 1;如果 o2 为 null,则 o1 大于 o2,返回 -1;否则,比较 o1 和 o2 的大小。
阅读全文