2013-10-12 195 views
0

我想找回整數類型的混洗數組,因此我編寫了這段代碼,但它不工作......在此代碼中,我希望每次分類Scase的每個對象都有新的值...但從5,50,100必須...將列表轉換爲int數組

class Scase { 

    int label; 
    int value; 

    public static int arr[] = {5,50,100}; 

    public static int[] toarr(List<Integer> list) 
    { 
     int[] ret = new int[list.size()]; 
     for (int i = 0; i < ret.length; i++) 
      ret[i] = list.get(i); 
     return ret; 
    } 

    public static void main(String args[]) 
    { 
     Scase obj[] = new Scase[1]; 
     List<Integer> lst = new ArrayList<Integer>(); 

     lst = Arrays.asList(arr); 

     Collections.shuffle(lst); 

     int ar[]; 
     ar = toarr(lst); 

     for(int i = 0; i <= 2; i++) { 
      obj[i].value = ar[i]; 
     } 
     System.out.println(obj[0].label + " " + obj[0].value); 
     System.out.println(obj[1].label + " " + obj[1].value); 
     System.out.println(obj[2].label + " " + obj[2].value); 
    } 
} 
+0

請添加一個標籤,指明您正在使用的語言(C#?Java?...?)。此外,這是關於列表數組轉換還是關於洗牌?您可能想要修改你的問題標題。 –

回答

0

不幸的是,我不相信真的有這樣做由於Java的處理基本類型,拳擊,數組和仿製藥的性質的更好的方法。特別是:

List<T>.toArray將無法​​工作,因爲有整數到int 沒有轉換,您不能使用int作爲泛型類型參數,因此它必須是一個int-具體方法(或其中一個使用反思做骯髒的詭計)。 我相信有一些庫爲所有基元類型都有這種方法的自動生成版本(即每個類型都有一個複製的模板)。這很醜陋,但這就是我害怕的方式:(

即使Arrays類在泛型到達Java之前出現,它仍然必須包含所有可怕的重載,如果它今天被引入(假設你想要使用原始數組)