我有一个

List<ArrayList> arg = new ArrayList<ArrayList>();




[[logo], [cd_branche], [lib_branche]],

(other arguments not relevant)

[[1111,22222,3333]],[[2222,324,432]]...


我想将其转换为String [],所以我做到了

    Object[] obj = arg.toArray();
    String[] headers =new String[obj.length];

    for(int i=0;i<headers.length;i++) {
        headers[i]= (String) obj[i];
        }


但我越来越

java.util.ArrayList cannot be cast to java.lang.String


我正在寻找的输出是

headers[0]=logo
headers[1]=cd_branche
headers[2]=lib_branche


使用Java 6

最佳答案

听起来您希望它是一个字符串数组(即"[["logo", "cd_branche", "lib_cranche"],[..],[..],[1111,22222,3333],[2222,324,432]")。

在这种情况下,只需执行以下操作:

Object[] obj = arg.toArray();
String[] headers =new String[obj.length];
for(int i=0;i<headers.length;i++) {
    headers[i]= Arrays.toString(obj);
}


并且obj中的每个ArrayList对象都将以字符串数组格式返回。



更新:由于您希望将其作为平面数组,因此需要(a)计算所需数组的大小,以及(b)通过两个循环遍历对象,并进行如下深度搜索:

int size = 0;
for (int i = 0; i < arg.size(); size += arg.get(i++).size());

String[] headers =new String[size];
for(int count = 0, i=0;i<arg.size();i++) {
    for (int j=0; j< arg.get(i).size(); j++) {
        headers[count++]= arg.get(i).get(j).toString();
    }
}

10-04 20:25