将列表<ArrayList>转换为字符串[]



我有一个

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对象都将以字符串数组格式返回。


UPDATE:由于您希望它是一个平面数组,您需要(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();
    }
}               

String header =" ";
for(字符串头:arg)}

最新更新