带有自定义Comparator的Java排序列表

时间:2017-03-23 01:59:30

标签: java arrays sorting

我有我的班级:

class CompararVehicle implements Comparator<Vehicle> {

    @Override
    public int compare(Vehicle o1, Vehicle o2) {
        if (o1 == o2) {
            return 0;
        }

        if(o2.getDataMatricula().compareTo(o1.getDataMatricula())==0){
            if(o1.getMatricula().compareTo(o2.getMatricula())==0){
                return 0;
            }
            else {
                   return o1.getMatricula().compareTo(o2.getMatricula());
            }
        }


        else {
            return o2.getDataMatricula().compareTo(o1.getDataMatricula());
        }

    }
}

我试图用类中的自定义比较器对一个Vehicle数组进行排序:

Arrays.sort(MyListofVehicle, new CompararVehicle());

但是当我尝试这样做时出现错误:

List<Vehicle>

编辑:MyListOfVehicle是一个变量cat <- unlist(lapply(d0, function(x) sample(c(1.0, 0.25), size=1, prob=c(1-x, x)))) 我从NetBeans获得的错误是:

  

错误:找不到合适的方法   排序(列表,CompararVehicle)            Arrays.sort(llVeh,new CompararVehicle());       方法Arrays.sort(T#1 [],Comparator)不适用         (不能推断类型变量T#1

事实上,我已经在课堂上进行了比较&#34; vehicle&#34;当我尝试用另一个标准命令阵列时干扰?如果是这样,我如何通过新标准订购?

1 个答案:

答案 0 :(得分:0)

MyListofVehicle 列表(列表)而不是数组 所以你不能使用Arrays.sort方法 试试这个

Collections.sort(MyListofVehicle, new CompararVehicle());

或者你可以做这样的事情

Arrays.sort(MyListofVehicle.toArray(new Vehicle[0]), new CompararVehicle());