如何转换List <list <object>&gt;到一个多维数组?

时间:2015-11-20 08:58:21

标签: java multidimensional-array

List<List<Object>> EventAll = new ArrayList<List<Object>>();

while(rs1.next())
{
    List<Object> row = new ArrayList<Object>();
    /*EventAll.add(rs1.getRow(), row);*/
    row.add(rs1.getString("eventName")); 
    row.add(rs1.getString("duration")); 
    row.add(rs1.getString("playhead"));
    EventAll.add(row);
}

String[][] stringArray = EventAll.toArray(new String[EventAll.size()][]);//line 66

在上面的示例中,您可以看到我有List<List<Object>>,我在while循环中为其添加了列值。在这一点上它对我来说很好。

但是当我尝试使用toArray()方法将其转换为多维数组时,我遇到以下异常:

****EXCEPTION:**java.lang.ArrayStoreException
    at java.lang.System.arraycopy(Native Method)
    at java.util.ArrayList.toArray(Unknown Source)
    at DataFromMySql.main(DataFromMySql.java:66)**

3 个答案:

答案 0 :(得分:2)

/user/34/games/55/

答案 1 :(得分:2)

toArray可以将您的List<List<String>>(您应该,BTW,将您的List<List<Object>>更改为List<List<String>>)转换为List<String>[],而不是转换为String[][] }。

它还可以将每个内部List<String>转换为String[]

因此,您必须创建二维数组,并使用EventAll.get(i).toArray(new String[EventAll.get(i).size()])分别初始化该数组的每一行。

答案 2 :(得分:0)

请注意,只有当您的内部列表具有相同的长度且所有对象都是字符串时,这才有效!

String[][] array = new String[list.size()][list.get(0).size()];
System.out.println();
int i = 0;
for (List<Object> l : list ) {
    int j = 0;
    for (Object obj : l) {
        array[i][j] = (String) obj;
        j++;
    }
    i++;
}