2013-05-17 78 views
1

我正在嘗試編寫一個簡單的sort函數,該函數可以使用接口Comparable對任何類型的數據進行排序。我想我已經這樣做了,但我有問題傳遞特定類型的數組作爲參數。代碼是使用Comparable接口對任何類型的數據進行排序

public class Main { 
    public static void main(String[] args) { 
     int[] arr= {12,14,11,6}; 
      // The above gives error 
      // But this works : Comparable[] arr= {12,14,11,6}; 
     Comparable b[]= Selection.sort(arr); 
     for (Comparable x:b) 
      System.out.println(x); 
    } 
} 

什麼是probelm?錯誤讀取:Comparable is a raw type. References to generic type Comparable<T> shoulb be parameterized.

只是爲了更清楚,剩下的代碼是:

public class Selection { 

    public static Comparable[] sort(Comparable[] a){ 
     int N= a.length; 

     for(int i=0;i<N;i++){ 
      int min=i; 
      for(int j=i+1;j<N;j++) 
       if(less(a[j],a[min])) 
        min=j; 

      exch(a,i,min); 
     } 
     return a; 
    } 

    // Other methods defined here 
} 

回答

3

如果他們是可比的,不推倒重來!

Arrays.sort(b); 

可以敷在你的方法:

public static Comparable[] sort(Comparable[] a){ 
    Arrays.sort(a); 
    return a; 
} 

但您要添加任何價值。在需要的地方使用Arrays.sort(array);


如果你想保留原始數組,然後進行復印第一,也使用Arrays實用工具類:

Comparable[] sorted = Arrays.copyOf(array); 
Arrays.sort(sorted); 
相關問題