2017-03-23 70 views
0

我有我的課:自定義比較的Java排序列表

public class Vehicle implements Comparable<Vehicle> { 

.... 

@Override 
    public int compareTo(Vehicle o) { 

     if (o.dataMatricula.compareTo(dataMatricula) ==0){ 
      return matricula.compareTo(o.matricula); 

     } 
     else { 
      return o.dataMatricula.compareTo(dataMatricula); 
     } 

... 

} 

而且我試圖從類的自定義排序比較車輛的數組:

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()); 
     } 

    } 
} 

,但我得到

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

編輯:MyListOfVehicle是一個變量List<Vehicle>,當我嘗試做這樣的錯誤我從NetBeans中得到的錯誤是:

error: no suitable method found for sort(List,CompararVehicle) Arrays.sort(llVeh, new CompararVehicle()); method Arrays.sort(T#1[],Comparator) is not applicable (cannot infer type-variable(s) T#1

這是事實,我已經有一個的compareTo在我的課「車輛」干擾當我試圖訂購與其他標準的陣列?如果是這樣,我如何按新標準訂購?

+6

'Arrays.sort'只能對數組進行排序,而不能對List進行排序。也許你打算使用'Collections.sort'。 – 4castle

+1

MyListofVehicle是一種類型嗎?它拼寫成一個,不像變量。如果它是(拼寫錯誤)變量,它的類型是什麼?這個錯誤提到了一個'List',但是你要求一個數組。您不能使用排序數組的方法對不是數組的數組進行排序。 –

+0

這是一個車輛清單,編輯! – Asdemuertes

回答

0

MyListofVehicle列表(名單)不是一個陣列 所以uyou不能使用Arrays.sort方法 試試這個

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

,或者你可以做這樣的事情

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