2014-09-29 63 views
1

我計劃將ArrayList轉換爲普通數組。之後,我試圖把該對象類型向下轉換成正常array.But其表示「不能從對象轉換爲int」在管線17如何將對象類型的數組向下轉換爲普通數組?

package coll; 

import java.util.ArrayList; 
public class ToArray { 

    public static void main(String[] args) { 
     ArrayList a1=new ArrayList(); 
     a1.add(new Integer(2)); 
     a1.add(new Integer(8)); 
     a1.add(new Integer(7)); 
     a1.add(new Integer(6)); 
    System.out.println("the contents are"+ a1); 
    Object ia[]=a1.toArray(); 
    int[] a=new int[5]; 
    for(Object i:ia) 
    { 
     a[i]=((Integer)ia[i]).intValue(); 
    } 
    } 
} 

回答

3

陣列只需要int值進行索引。在for循環中,您正嘗試將索引對象值放入,以便Downcast異常即將到來。

相反的:下面的代碼

for(Object i:ia){ 
    a[i]=((Integer)ia[i]).intValue(); 
} 

用途:

for(int i=0;i<ia.length;i++){ 
    a[i] = ((Integer) ia[i]).intValue(); 
} 
+0

你..謝謝..我只是一個初學者。我有疑問。對於每個可以用於迭代數組值..在這裏我使用'foreach'迭代包含對象類型的數組。我們不能使用每個? – 2014-09-30 01:31:37

+0

您可以使用foreach循環迭代包含對象的ArrayList,但您也嘗試在同一時間將值分配給數組。 – 2014-09-30 04:04:45

1
public static void main(String[] args) { 

     ArrayList a1 = new ArrayList(); 
     a1.add(new Integer(2)); 
     a1.add(new Integer(8)); 
     a1.add(new Integer(7)); 
     a1.add(new Integer(6)); 
     System.out.println("the contents are" + a1); 

     Integer[] ia = (Integer[])a1.toArray(new Integer[a1.size()]); 

     for (int i : ia) { 
      System.out.println(i); 
     } 
    } 
+0

雅感謝夥計..我明白了.. – 2014-09-30 01:34:31

0

首先使用泛型和總是使用超類型表示一個對象

喜歡這個List<Integer> list = new ArrayList<Integer>();

其次,沒有必要做這個

list.add(new Integer(5)); 

您可以直接做到這一點list.add(5);自動包裝和解包就搞定。

約在陣列的事做到這一點,

int arr[] = new int[list.size()]; 

Iterator<Integer> i =list.iterator(); 
int count =0 ; 
while(i.hasNext()) 
{ 
    arr[count] = i.next(); 
    count++; 
} 

使用泛型ArrayList中瞭解到,它應該只接受整數。你不需要Downcast或Upcast Anything:D

+0

請參閱文檔。你通過閱讀文檔可以學到很多東西。 http://docs.oracle.com/javase/6/docs/api/java/util/List.html – Oliver 2014-09-29 05:28:26

+0

非常感謝。作爲初學者,現在只有我才知道泛型的重要性。 – 2014-09-30 01:42:00

相關問題