我正在尝试找到一种方法来定义java.util.Comparator
的唯一实现,可用于升序和降序排序。
我已经定义了一个代表大众汽车的类Golf.java
。我还定义了一个比较器,它通过马力(Golf
变量)命令int
实例。我想知道是否可以使用相同的比较器进行升序和降序排序。
golf horsepower comparator.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;
}
}
鉴于Golf
的列表,我如何使用相同的java.util.Comparator
实现对它们进行升序或降序排序?
您可以使用Collections::reverseOrder
按顺序排序。例如:
GolfHorsePowerComparator golfHorsePowerComparator = new GolfHorsePowerComparator();
Collections.sort(golfList, Collections.reverseOrder(golfHorsePowerComparator));
是的,看看documentation。 Comparator
有一个reversed
方法。你可以这样做:
list.stream().sorted(comparator).collect(Collectors.toList());
list.stream().sorted(comparator.reversed()).collect(Collectors.toList());
第一个是升序,第二个是降序。