ASC和DESC订单的自定义比较器实现

Goz*_*s19 1 java sorting algorithm comparator

我试图找到一种方法来定义java.util.Comparator可用于升序和降序用途的唯一实现。

我定义了一个Golf.java代表大众汽车的类。我还定义了一个比较器,该比较器Golf按功率(int变量)对实例进行排序。我想知道是否可以将相同的比较器用于升序和降序。

GolfHorsePowerComparator.java

package test2.comparator;

import test2.dto.Golf;
import java.util.Comparator;

public class GolfHorsePowerComparator implements Comparator<Golf> {

    @Override
    public int compare(Golf a, Golf b) {
        return a.getHorsePower() > b.getHorsePower() ? 1 : a.getHorsePower() == b.getHorsePower() ? 0 : -1;
    }

}
Run Code Online (Sandbox Code Playgroud)

给定一个列表,Golf我如何使用相同的java.util.Comparator实现对它们进行升序或降序排序?

Ani*_*wat 7

您可以使用Collections::reverseOrder以降序排序。例如:

GolfHorsePowerComparator golfHorsePowerComparator = new GolfHorsePowerComparator();
Collections.sort(golfList, Collections.reverseOrder(golfHorsePowerComparator));
Run Code Online (Sandbox Code Playgroud)