2014-03-19 22 views
0

更具體的問題是,我希望能夠洗一個數組,無論它是否包含整數,字符串,對象或其他東西。使用Comparable類型似乎有問題,我不想使用int[]String[],因爲我想使用更通用的類,允許使用相同的Shuffle類對所有這些類型的數組進行混洗。參數可以比傳遞的參數更普遍嗎?

這是我的代碼。

import java.lang.Math; 

public class Shuffle 
{ 
    public Shuffle() {} 

    public void shuffle(Comparable[] a) 
    { 
     int n= a.length; 
     int j; 
     for (int i=1; i<n; i++) 
     { 
      j= (int)(Math.random()*(i+1)); 
      if (i!=j) swap(a, i, j); 
     } 
    } 

    protected void swap(Comparable[] a, int i, int j) 
    { 
     Comparable temp= a[i]; 
     a[i]= a[j]; 
     a[j]= temp; 
    } 

} 
+1

請勿使用原始類型。 –

+0

問題是,在Java中,你不能用一個「int」數組替換某個對象類的數組。 「標量」 - char,short,int,long,float,double和bool - 不能一概處理。如果需要的話,其他任何東西都可以放在一個「Object []」的數組中。 –

+0

非常有幫助的評論,謝謝! –

回答

3

shuffleswap方法不使用compareTo,所以沒有理由讓類型Comparable

在這種情況下,Object[]似乎是最好的選擇,作爲Comparable[]的替代品。任何物體都可以洗牌。這是一般的,因爲它得到。

相關問題