int order = requestedOrder.equals("asc") ? 1 : -1;
Collections.sort(List<CustomObj>, new Comparator<CustomObj>() {
public int compare(CustomObj first, CustomObj scnd) {
return first.getComparableParam().compareTo(scnd.getComparableParam()) * order;
}
});
public class NorCoperator extends ExistingComperator implements Comparator<MyClass> {
@Override
public int compare(MyClass a, MyClass b) throws Exception {
return super.compare(a, b)*-1;
}
}
6条答案
按热度按时间gmxoilav1#
您可以使用
Comparator.reverseOrder()
让比较器给出与自然顺序相反的顺序。如果要颠倒现有比较器的顺序,可以使用
Comparator.reversed()
。样本代码:
llew8vvj2#
您也可以使用比较器.comparing(函数,比较器)
必要时可方便地将比较器链接起来,例如:
ssm49v7z3#
Java 8
Comparator
接口有一个reversed
方法:https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#reversed--gupuwyp24#
我发现当你有一个定制的比较器,并且反向是有条件的(你可以做或不做)时,这个问题会被搜索为反向顺序。
匹诺曹提出的想法帮助了我。
代码如下:
希望以后能帮到别人
idfiyjo85#
为什么不扩展现有的比较器并覆盖super和结果呢?比较器接口的实现不是必需的,但它使发生的事情更清楚。
结果你得到了一个容易重用的类文件,可测试的单元步骤和清晰的javadoc。
xriantvc6#
如果要使用类字段: