Java 根据元素的自然顺序对列表进行排序

Java 根据元素的自然顺序对列表进行排序,java,sorting,comparator,Java,Sorting,Comparator,我想要以下代码的降序排序类型: 这是升序排序: public static <T extends Vm> void sortByCpuUtilization(List<T> vmList) { Collections.sort(vmList, new Comparator<T>() { @Override public int compare(T a, T b) throws ClassCastException {

我想要以下代码的降序排序类型:

这是升序排序:

public static <T extends Vm> void sortByCpuUtilization(List<T> vmList) {
    Collections.sort(vmList, new Comparator<T>() {

        @Override
        public int compare(T a, T b) throws ClassCastException {
            Double aUtilization = a.getTotalUtilizationOfCpuMips(CloudSim.clock());
            Double bUtilization = b.getTotalUtilizationOfCpuMips(CloudSim.clock());
            return bUtilization.compareTo(aUtilization);
        }
    });
}
公共静态无效SortByCpu利用率(列表vmList){
Collections.sort(vmList,newcomparator(){
@凌驾
公共int比较(ta,tb)抛出ClassCastException{
双重自动化=a.getTotalizationofpumpips(CloudSim.clock());
Double bUtilization=b.gettotalizationofpumpips(CloudSim.clock());
收益分配。比较(自主化);
}
});
}

将a与b进行比较:

public static <T extends Vm> void sortByCpuUtilization(List<T> vmList) {
    Collections.sort(vmList, new Comparator<T>() {

        @Override
        public int compare(T a, T b) throws ClassCastException {
            Double aUtilization = a.getTotalUtilizationOfCpuMips(CloudSim.clock());
            Double bUtilization = b.getTotalUtilizationOfCpuMips(CloudSim.clock());
            return aUtilization.compareTo(bUtilization);
        }
    });
}
公共静态无效SortByCpu利用率(列表vmList){
Collections.sort(vmList,newcomparator(){
@凌驾
公共int比较(ta,tb)抛出ClassCastException{
双重自动化=a.getTotalizationofpumpips(CloudSim.clock());
Double bUtilization=b.gettotalizationofpumpips(CloudSim.clock());
回归自我化。比较(自我化);
}
});
}

有几种方法可以做到这一点。首先,您可以实现一个反向比较器:

public static <T extends Vm> void sortByCpuUtilizationDesc(List<T> vmList) {
    Collections.sort(vmList, new Comparator<T>() {

        @Override
        public int compare(T a, T b) throws ClassCastException {
            Double aUtilization = a.getTotalUtilizationOfCpuMips(CloudSim.clock());
            Double bUtilization = b.getTotalUtilizationOfCpuMips(CloudSim.clock());
            return aUtilization.compareTo(bUtilization); // Note this is reversed
        }
    });
}

非常感谢你的回复。这对我很有帮助。非常感谢你的回复。这对我很有帮助
public static <T extends Vm> void sortByCpuUtilizationDesc(List<T> vmList) {
    // Same comparator as before, should be extracted to a named class.
    Collections.sort(vmList, Collections.reverseOrder(new Comparator<T>() {

        @Override
        public int compare(T a, T b) throws ClassCastException {
            Double aUtilization = a.getTotalUtilizationOfCpuMips(CloudSim.clock());
            Double bUtilization = b.getTotalUtilizationOfCpuMips(CloudSim.clock());
            return aUtilization.compareTo(bUtilization); // Note this is reversed
        }
    }));
}