2014-10-28 84 views
0

我需要將數組列表轉換爲對象[] [],我嘗試了幾種不同的方法,並且都似乎拋出了一兩個錯誤。ArrayList to Object [] []

我最新的嘗試是這樣的:

Object[][] array = dataList.toArray(new Object[dataList.size()][]); 

這引發以下錯誤:

java.lang.ArrayStoreException 
    at java.lang.System.arraycopy(Native Method) 
    at java.util.ArrayList.toArray(Unknown Source) 

我的數組列表中填充了我發班,這是類:

class dataClass { 
    int x; 
    int y; 
    int z; 
    String string1; 
    String string2; 
    Date date; 
    int event; 

    public dataClass(int x, int y, int z, String string1, String string2, 
      Date date, int event) { 
     this.x = x; 
     this.y = y; 
     this.z = z; 
     this.string1 = string1; 
     this.string2 = string2; 
     this.date = date; 
     this.event = event; 
    } 
} 

這是我如何初始化我的數組列表:

public static List<dataClass> dataList = new ArrayList<dataClass>(); 

我然後通過添加我的新數據類:

.add(new dataClass(...)); 

任何幫助將是巨大的,謝謝。

+3

您如何期待ArrayList中的元素存儲在Object [] []中? – 2014-10-28 00:03:33

+8

我看到一個額外的維度沒有明顯的原因冒出來,你能詳細說明嗎? – Jack 2014-10-28 00:03:51

+10

平地人民需要一個答案 – tom 2014-10-28 00:04:29

回答

1

你的問題沒有完全確定,但這裏是我最好的猜測你想要的東西:

Object[][] array = new Object[dataList.size()][]; 
int i = 0; 
for (DataClass c : dataList) 
{ 
    array[i] = new Object[7]; 
    array[i][0] = c.x; 
    array[i][1] = c.y; 
    array[i][2] = c.z; 
    array[i][3] = c.string1; 
    array[i][4] = c.string2; 
    array[i][5] = c.date; 
    array[i][6] = c.event; 
    i++; 
} 

至於這是否是好的設計或沒有,沒有,你要完成什麼樣的解釋,我無法評論。這就是我想要的,但底層設計會讓我停下來。我會試着去理解這個目標,然後用更加Java的慣用方式來寫它。

1

你有包含dataClass對象的arraylist。您可以將其轉換爲一維數組而不是二維數組。

dataClass [] dataArr = dataList.toArray(new dataClass [dataList.size()]);